【问题标题】:What does %s and %d mean in printf in the C language? [closed]C语言的printf中的%s和%d是什么意思? [关闭]
【发布时间】:2012-01-26 23:24:32
【问题描述】:

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

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 符号表示什么?
  • 为什么会有这么多?
  • 这里是用逗号代替+吗?

【问题讨论】:

  • 你看过 man 3 printf 吗? linux.die.net/man/3/printf
  • 传递给printf 的字符串是没有意义的——应该是printf("Length of string %d is %d\n", i, strlen(code[i]));
  • 所以字符串文字只是表示这些变量的输出在字符串中的位置?这似乎是一种奇怪的做事方式?
  • “里面的参数和Java很不一样。” Java也有System.out.printf...
  • 这太有帮助了,谢谢 AusCBloke !!!!!

标签: c printf


【解决方案1】:

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

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

请参阅此 Wikipedia 文章以获取精美图片:printf format string

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

【讨论】:

  • 没问题!只是提醒一下:它并不总是一个 % 后跟一个字符。他们可能会有点狂野 - %.02lf - 但这可以让你做一些整洁的事情:)
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    Java也有一个printf,很相似。

    【讨论】:

      【解决方案4】:

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

      %s%d 是转换说明符;他们告诉printf 如何解释剩余的论点。 %s 告诉 printf 对应的参数将被视为字符串(在 C 术语中,char 的以 0 结尾的序列);对应参数的类型必须是char *%d 告诉 printf 相应的参数将被视为整数值;对应参数的类型必须是int。由于您来自 Java 背景,请务必注意 printf(与其他可变参数函数一样)依赖 you 来告诉它剩余参数的类型。如果格式字符串为"%d%s%d%s\n"printf 会尝试将"Length of string" 视为整数值,将i 视为字符串,结果很悲惨。

      【讨论】:

        【解决方案5】:

        %s 用于字符串 %d 用于十进制(或整数) %c 代表人物

        它似乎在咀嚼一个字符数组,并打印出从每个后续位置开始存在的任何字符串。在每种情况下,字符串都会在第一个 null 处停止。

        逗号只是分隔函数的参数,该函数采用可变数量的参数;这个数字对应前面格式描述符中%args的个数。

        【讨论】:

          【解决方案6】:

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

          需要注意的是,说这与Java不同是不正确的。 printf 代表打印格式,如果你在 Java 中进行格式化打印,这完全是一样的用法。这可以让您解决 C 和 Java 中有趣的新问题!

          【讨论】:

            【解决方案7】:

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

            %s 指的是一个字符串 %d 指的是一个整数 %c 指的是一个字符。 因此:%s%d%s%c\n 打印字符串“The first character in sting”,%d 打印 i,%s 打印“is”,%c 打印 str[0]。

            【讨论】:

              【解决方案8】:

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

              【讨论】:

                【解决方案9】:

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

                【讨论】:

                  猜你喜欢
                  • 2011-12-15
                  • 2014-11-07
                  • 2016-04-22
                  • 1970-01-01
                  • 2018-03-14
                  • 2015-03-04
                  • 2020-08-07
                  • 2016-12-03
                  • 2011-09-02
                  相关资源
                  最近更新 更多