sprintf()
函数与
printf()
函数的用法几乎一样。只是前者是将内容打印到字符串中,后者直接在命令行打印出来。
sprintf()
函数原型:
int sprintf( char *buffer, const char *format [, argument] ... );
除了前两个参数固定,后面可以接任意多个参数。
第二个参数为格式化字符串,
printf
和
sprintf
都使用格式化字符串来指定串的格式,以
%
开头,然后在后边的变参列表中提供相应的变量,最终相应的位置的变量就会被替换进来。
sprintf
最常见的应用之一莫过于把整数打印到字符串中,所以,
spritnf
在大多数场合可以替代
itoa
。
sprintf(s, "%d", 123);
sprintf(s, "%8d%8d", 123, 5678); //指定宽度,不足的左边补空格,结果为" 123 5678"
浮点数用%f
控制,默认打印6位小数。
使用%d
或者%x
打印一个字符,便能得出它的10进制或16进制的ASCII码;反过来,使用%c
打印一个整数,便可以看到它所对应的ASCII字符。因为char类型本质上也是存储数值类型,只是习惯上用char来表示字符,实际上char就是byte,一个字节的数值类型。
实现各种各样格式化字符串
sprinf
就是将格式化字符串里的所有内容打印到第一个参数(字符数组)中,因此也可以用来连接字符串,非常灵活。
spritnf
和printf
都最终返回本次函数调用最终打印到字符缓冲区中的字符数目。