C/C++中sprintf的用法


       原型:int sprintf( char *buffer, const char *format [, argument] … ); 功能:把格式化的數據寫入buffer容器中(字符串),返回buffer的長度。這里s為一個buffer,類型為字符數組名或者字符指針(需要初始化)。
sprintf(s, "%d", 123); //產生"123"
sprintf(s, "%8d%8d", 123, 4567); //產生:"     123    4567"(123前5個字符寬,4567前4個字符寬)
sprintf(s,"%m.ns",cp);//這里m為m個字符寬,如果輸出的多於m個字符,則按實際需要分配寬度,如果少於m個字符則在左邊(-m.n時在右邊,此時是左對齊)補足不夠的字符數的寬度。n為截取cp的前n個字符,后面補'\0'。在格式化到s中時都將加有'\0'結束符。該函數的實際執行過程是:將s和format地址遞加,逐個賦值,即:s[i]=format[i](i=0,1,2,……)。
       另外,s如果為數組,跟數組的長度沒關系,也就是不會出現值溢出問題,因為這里取的只是首地址,字符多於一個時,首地址遞加。當然不管用printf還是sprintf打印到屏幕和打印到字符串中,都是遇'\0'結束的。相反,如果字符數組沒有'\0',調用printf或者sprintf時會出現未知數據。因為函數是直到遇到空字符結束的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM