sprintf函数⽤法详解
sprintf指的是字符串格式化命令,函数声明为 int sprintf(char *string, char *format [,argument,…]);,主要功能是把格式化的数据写⼊某个字符串中,即发送格式化输出到 string 所指向的字符串。sprintf 是个变参函数。使⽤sprintf 对于写⼊buffer的字符数是没有限制的,这就存在了buffer溢出的可能性。解决这个问题,可以考虑使⽤ snprintf函数,该函数可对写⼊字符数做出限制。
函数声明
int sprintf(char *string, char *format [,argument,…]);
参数列表
string-- 这是指向⼀个字符数组的指针,该数组存储了 C 字符串。
format-- 这是字符串,包含了要被写⼊到字符串 str 的⽂本。它可以包含嵌⼊的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进⾏格式化。format 标签属性是%[flags][width][.precision][length]specifier
[argument]...:根据不同的 format 字符串,函数可能需要⼀系列的附加参数,每个参数包含了⼀个要被插⼊的值,替换了 format 参数中指定的每个 % 标签。参数的个数应与 % 标签的个数相同。格式化命令format参数
功能
把格式化的数据写⼊某个字符串缓冲区。
返回值
如果成功,则返回写⼊的字符总数,不包括字符串追加在字符串末尾的空字符。如果失败,则返回⼀个负数。
sprintf 返回以format为格式argument为内容组成的结果被写⼊string的字节数,结束字符‘\0’不计⼊内。即,如果“Hello”被写⼊空间⾜够⼤的string后,函数sprintf 返回5。
说明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都可以使⽤。其中的格式化字符串是此函数的精华。
说明4:可以控制精度
char str[20];
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:可以将多个字符串连接成字符串
char str[20];
char s1={‘A’,‘B’,‘C’};
char s2={‘T’,‘Y’,‘x’};
sprintf(str,"%.3s%.3s",s1,s2);
%m.n在字符串的输出中,m表⽰宽度,字符串共占的列数;n表⽰实际的字符数。%m.n在浮点数中,m也表⽰宽度;n表⽰⼩数的位数。说明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, "%0x", 2 * sizeof(void *), &i);
说明9:sprintf的返回值是字符数组中字符的个数,即字符串的长度,不⽤在调⽤strlen(s)求字符串的长度。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论