char s[50]; sprintf(s,"%d",123456); 为什么格式化不用“%s”,而用“%d”?

2024-11-27 00:47:32
推荐回答(4个)
回答1:

当编译器读到123456时会把它当成十进制整数常量,
与123456不同,“123456”是字符串常量,“123456”的值是一个字符型指针(char *)
%d输出十进制数,可以输出十进制常量或变量或整型表达式,
%s输出字符串,遇到字符串末尾的 ‘\0’ (NUL)时停止输出,可以输出(char *)类型指针所指向的字符串。

正确的用法应该这样:
#include "stdio.h"
main(void)
{
static char *s1 = "string 1";
char s2[] = "string 2";
char s3[128];
sprintf(s3,"%d,%s,%s,%s\n",123456,"123456",s1,s2);
return 0;
}

回答2:

用%s,还是用%d主要取决于你需要格式化的变量类型。
也就是后面待的参数,123456是int型所以用%d。
如果是“123456”则用%s

回答3:

%s代表字符串,%d代表十进制整数.

回答4:

char s[50]; sprintf(s,