說明1:該函數包含在stdio.h的頭文件中,使用時需要加入:#include <stdio.h>
說明2:sprintf與printf函數的區別:二者功能相似,但是sprintf函數打印到字符串中,而printf函數打印輸出到屏幕上。sprintf函數在我們完成其他數據類型轉換成字符串類型的操作中應用廣泛。
說明3:sprintf函數的格式:int sprintf( char *buffer, const char *format [, argument,...] );
除了前兩個參數固定外,可選參數可以是任意個。buffer是字符數組名;format是格式 化字符串(像:"=%6.2f%#x%o",%與#合用時,自動在十六進制數前面加上0x)。只要在printf中可以使用的格式化字符串,在 sprintf都可以使用。其中的格式化字符串是此函數的精華。
除了前兩個參數固定外,可選參數可以是任意個。buffer是字符數組名;format是格式 化字符串(像:"=%6.2f%#x%o",%與#合用時,自動在十六進制數前面加上0x)。只要在printf中可以使用的格式化字符串,在 sprintf都可以使用。其中的格式化字符串是此函數的精華。
說明4:可以控制精度
char str[20];
double f=14.309948;
sprintf(str,"%6.2f",f);
說明5:可以將多個數值數據連接起來。
double f=14.309948;
sprintf(str,"%6.2f",f);
說明5:可以將多個數值數據連接起來。
char str[20];
int a=20984,b=48090;
sprintf(str,"=m",a,b);
str[]="20984 48090"
說明6:可以將多個字符串連接成字符串
sprintf(str,"=m",a,b);
str[]="20984 48090"
說明6:可以將多個字符串連接成字符串
char str[20];
char s1={'A','B','C'};
char s2={'T','Y','x'};
sprintf(str,"%.3s%.3s",s1,s2);
說明7:可以動態指定,需要截取的字符數
char s1={'A','B','C'};
char s2={'T','Y','x'};
sprintf(str,"%.3s%.3s",s1,s2);
說明7:可以動態指定,需要截取的字符數
char s1={'A','B','C'};
char s2={'T','Y','x'};
sprintf(str,"%.*s%.*s",2,s1,3,s2);
sprintf(s, "%*.*f", 10, 2, 3.1415926);
說明8:可以打印出i的地址:sprintf(s, "%p", &i);相當於sprintf(s, "%0*x", 2 * sizeof(void *), &i);
char s2={'T','Y','x'};
sprintf(str,"%.*s%.*s",2,s1,3,s2);
sprintf(s, "%*.*f", 10, 2, 3.1415926);
說明8:可以打印出i的地址:sprintf(s, "%p", &i);相當於sprintf(s, "%0*x", 2 * sizeof(void *), &i);
說明9:sprintf的返回值是字符數組中字符的個數,即字符串的長度,不用在調用strlen(s)求字符串的長度。