【问题标题】:Output single character in C在C中输出单个字符
【发布时间】:2010-09-23 12:39:31
【问题描述】:

在 C 程序中打印单个字符时,我必须在格式字符串中使用“%1s”吗?我可以使用“%c”之类的东西吗?

【问题讨论】:

    标签: c character string-formatting


    【解决方案1】:

    是的,%c 将打印一个字符:

    printf("%c", 'h');
    

    另外,putchar/putc 也可以。来自“man putchar”:

    #include <stdio.h>
    
    int fputc(int c, FILE *stream);
    int putc(int c, FILE *stream);
    int putchar(int c);
    
    * fputc() writes the character c, cast to an unsigned char, to stream.
    * putc() is equivalent to fputc() except that it may be implemented as a macro which evaluates stream more than once.
    * putchar(c); is equivalent to putc(c,stdout).
    

    编辑:

    还要注意,如果你有一个字符串,要输出一个字符,你需要得到你想要输出的字符串中的字符。例如:

    const char *h = "hello world";
    printf("%c\n", h[4]); /* outputs an 'o' character */
    

    【讨论】:

    • 我使用的是 MS C 6.0,但它不起作用。也不报错。
    • 你能发布一些不工作的示例代码吗?确保 '%c' 中的 'c' 为小写。
    • 您是否尝试复制并粘贴我的示例。 %c 应该可以工作,因为参数是正确的类型(字符,而不是字符串)。
    【解决方案2】:

    如其他答案之一所述,您可以使用 putc(int c, FILE *stream)、putchar(int c) 或 fputc(int c, FILE *stream) 用于此目的。

    需要注意的重要一点是,使用上述任何函数都比使用任何格式解析函数(如 printf)快得多。

    使用 printf 就像使用机关枪发射一颗子弹。

    【讨论】:

    • printf() 对于单个字符,就像买书得到一张纸。
    【解决方案3】:

    注意'c'"c"之间的区别

    'c' 是一个适合用 %c 格式化的字符

    "c" 是一个 char*,指向长度为 2 的内存块(带有空终止符)。

    【讨论】:

    • 从技术上讲,"c" 是一个长度为 4 的 char*(或任何你的指针大小),它指向一个包含 2 个字符的内存块('c' 和 '\0 ')。但这只是迂腐。
    【解决方案4】:
    char variable = 'x';  // the variable is a char whose value is lowercase x
    
    printf("<%c>", variable); // print it with angle brackets around the character
    

    【讨论】:

      【解决方案5】:

      输出单个字符的最简单方法是简单地使用putchar 函数。毕竟,这是它的唯一目的,它不能做任何其他事情。再简单不过了。

      【讨论】:

        猜你喜欢
        • 2010-10-08
        • 1970-01-01
        • 1970-01-01
        • 2011-03-10
        • 2022-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多