1、該函數包含在stdio.h的頭檔案中。
#include <stdio.h>
2、sprintf與printf函數的差別
- sprintf和平時我們常用的printf函數的功能很相似。
- sprintf函數列印到字元串中,而printf函數列印輸出到螢幕上。
- sprintf函數和printf函數在我們完成其他資料類型轉換成字元串類型的操作中應用廣泛。
3、sprintf函數的格式:
int sprintf( char *buffer, const char *format, [ argument] … );
除了前兩個參數固定外,可選參數可以是任意個。buffer是字元數組名;format是格式化字元串(像:"=%6.2f%#x%o",%與#合用時,自動在十六進制數前面加上0x)。隻要在printf中可以使用的格式化字元串,在sprintf都可以使用。其中的格式化字元串是此函數的精華。
4、可以控制精度 char str[20]; double f=14.309948;
sprintf(str,"%6.2f",f); printf("%s\n",str);

14.31前面有一個空格,因為位寬為6,而14.31隻占了5位,預設在最左邊用空格補位 如果位寬小于實際位寬,沒有任何作用,為預設位寬。
5、可以将多個數值資料連接配接起來。 char str[20];
int a=20984,b=48090;
sprintf(str,"%d %d",a,b);
printf("%s\n",str);
6、可以将多個字元串連接配接成字元串 char str[20];
char s1[3]= {'A','B','C'};
char s2[3]= {'T','Y','X'};
sprintf(str,"%.3s%.3s",s1,s2);
printf("%s\n",str);
%m.n在字元串的輸出中,m表示寬度,字元串共占的列數;n表示實際的字元數。%m.n在浮點數中,m也表示寬度;n表示小數的位數。
7、可以動态指定,需要截取的字元數
char str[20],s[20];
char s1[3]= {'A','B','C'};
char s2[3]= {'T','Y','X'};
sprintf(str,"%.*s%.*s",2,s1,3,s2);
sprintf(s, "%*.*f", 10, 2, 3.1415926);
printf("%s\n",str);
printf("%s\n",s);
*代表你想要控制的參數
8、可以列印出i的位址 int i=0;char s[20];
sprintf(s,"%p",&i);
printf("%s\n",s);
上面的語句相當于
int i=0;char s[20];
sprintf(s, "%0*X", 2 * sizeof(void *), &i);
printf("%s\n",s);
9、sprintf的傳回值是字元數組中字元的個數,即字元串的長度,不用在調用strlen(s)求字元串的長度。 char s[20];int i=123456789;
int len=sprintf(s,"%d",i);
printf("%s\n",s);
printf("%d\n",len);