sprintf :格式化并打印各种数据到字符串。
include <stdio.h>
int
main(
void
)
{
char
buffer[200], s[] =
"computer"
, c =
'l'
;
int
i = 35, j;
float
fp = 1.7320534f;
// 格式化并打印各种数据到buffer
j =
sprintf
( buffer,
" String: %s\n"
, s );
j +=
sprintf
( buffer + j,
" Character: %c\n"
, c );
j +=
sprintf
( buffer + j,
" Integer: %d\n"
, i );
j +=
sprintf
( buffer + j,
" Real: %f\n"
, fp );
printf
(
"Output:\n%s\ncharacter count = %d\n"
, buffer, j );
}
Output:
String: computer
Character: l
Integer: 35
Real: 1.732053
character count = 79
格式化数字字符串
sprintf 最常见的应用之一莫过于把整数打印到字符串中,所以,sprintf 在大多数场合可以替代
itoa。
如:
//把整数123 打印成一个字符串保存在s 中。
sprintf(s, "%d", 123); //产生"123"
可以指定宽度,不足的左边补空格:
sprintf(s, "%4d%4d", 123, 4567); //产生:" 1234567"
当然也可以左对齐:
sprintf(s, "%-4d%4d", 123, 4567); //产生:"123 4567"
也可以按照16 进制打印:
sprintf(s, "%8x", 4567); //小写16 进制,宽度占8 个位置,
右对齐
sprintf(s, "%-8X", 4568); //大写16 进制,宽度占8 个位置,左对齐
这样,一个整数的16 进制字符串就很容易得到,但我们在打印16 进制内容时,通常想要一种左边补0 的等宽格式,那该怎么做呢?很简单,在表示宽度的数字前面加个0 就可以了。
sprintf(s, "%08X", 4567); //产生:"000011D7"
上面以”%d”进行的10 进制打印同样也可以使用这种左边补0 的方式。