在C语言中,%s和%d在printf中的含义是什么?

时间:2012-01-26 23:24:33

标签: c printf

我不明白这个C代码中%sd%做了什么:

for (i=0;i<sizeof(code)/sizeof(char*); i++) {
    printf("%s%d%s%d\n", "Length of String ", i, " is ", strlen(code[i]));
    str = code[i];
    printf("%s%d%s%c\n","The first character in string ", i, " is ", str[0]);
}

我是C语言的新手,我的背景是Java。

  • %s%d%s%d符号表示什么?
  • 为什么会有这么多人?
  • 这里使用的逗号是连接而不是+

9 个答案:

答案 0 :(得分:54)

printf()系列函数使用%字符作为占位符。遇到%时,printf会读取%后面的字符以确定要执行的操作:

%s - Take the next argument and print it as a string
%d - Take the next argument and print it as an int

请参阅此维基百科文章以获得精彩图片:printf format string

字符串末尾的\n用于换行符/回车符。

答案 1 :(得分:3)

%表示法称为格式说明符。例如,%d告诉printf()打印一个整数。 %s打印字符串(char *)等。您应该在这里查找:http://google.com/search?q=printf+format+specifiers

不,逗号不用于字符串连接。逗号用于分隔传递给函数的参数。

答案 2 :(得分:3)

第一个参数表示后面的变量/参数的占位符。
例如,%s表示您希望String成为您的第一个打印参数。

Java也有一个printf,它非常相似。

答案 3 :(得分:2)

%s是字符串 %d用于十进制(或int) %c代表字符

它似乎正在咀嚼一系列字符,并打印出从每个后续位置开始存在的任何字符串。在每种情况下,字符串将停在第一个空值。

逗号只是将参数分隔为一个带有可变数量args的函数;此数字对应于前面格式描述符中的%args数。

答案 4 :(得分:2)

%d打印为int %s打印为字符串 %f打印为浮点

应该注意的是,这与Java不同是不正确的。 Printf代表打印格式,如果您使用Java格式化打印,这是完全相同的用法。这可能允许您解决C和Java中的有趣和新问题!

答案 5 :(得分:1)

printf的第一个参数是一串标识符。

%s指的是一个字符串 %d表示整数 %c指的是一个字符。 因此:%s%d%s%c \ n打印字符串“sting中的第一个字符”,%d打印i,%s打印“是”,%c打印str [0]。

答案 6 :(得分:1)

"%s%d%s%d\n"是格式字符串;它告诉printf函数如何格式化和显示输出。格式字符串中紧跟前面没有%的任何内容都按原样显示。

%s%d是转化说明符;他们告诉printf如何解释其余的论点。 %s告诉printf相应的参数将被视为一个字符串(在C术语中,是一个0终止的char序列);相应参数的类型必须为char *%d告诉printf相应的参数将被视为整数值;相应参数的类型必须为int。由于您来自Java背景,因此请务必注意printf(与其他可变函数一样)依赖于来告诉它剩下的参数的类型是什么。如果格式字符串为"%d%s%d%s\n",则printf将尝试将"Length of string"视为整数值,将i视为字符串,并带有悲剧性结果。

答案 7 :(得分:0)

%(letter)表示替换文本的格式类型。 %s指定字符串,%d指定整数,%c指定字符。

答案 8 :(得分:0)

%s%d%s%d \ n是格式字符串。它用于指定信息在输出上的格式。这里格式字符串应该打印字符串后跟一个数字后跟一个字符串然后再输入一个数字。最后一个符号\ n表示回车符,表示一行的结尾。在C中,字符串不能通过+或连接,尽管您可以通过使用适当的格式字符串在一行上组合不同的输出(格式字符串的使用是格式化输出信息。)。