原型: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時會出現未知數據。因為函數是直到遇到空字符結束的。