如何在C中打印?

时间:2014-10-30 20:47:29

标签: c printf getchar

嗨,我对编程比较陌生,所以请耐心等待。

我想制作一个输入bcdefghijklmnopqrstuvwxy和输出

的程序
else if (c == 'x')
     ++nx;

其中x是输入的字母,输出的每个字母都重复输出。

这是我到目前为止所写的:

#include <stdio.h>

main() {

    int c;

    while((c = getchar()) != EOF) {
        printf("else if (c == '%d')\n", c);
        printf("\t++n%d;\n", c);
    }

    return 0;
}

输出是

,而不是返回我想要的输出
else if (c == '98')
    ++n98;
else if (c == '99')
    ++n99;
else if (c == '100')
    ++n100;
else if (c == '101')
    ++n101;
else if (c == '102')
    ++n102;
...

为什么c不能作为变量工作?

非常感谢你的帮助!

5 个答案:

答案 0 :(得分:3)

您希望c == '%c'按字符进行比较,或者c == %d(不带单引号)按顺序值进行比较,但您应该学会使用数组。看起来你正在尝试以困难的方式编写代码,并使用代码生成器来节省一些打字。代替:

 int n[256] = {0};  /* storage for counters, initialized to zero */

n[c]++;  // increment the counter for character c;

你的代码会短得多。

答案 1 :(得分:2)

用C语言编写并将格式指向的字符串打印到stdout时,您需要确保使用正确的格式说明符。这将确保您的参数格式正确并按预期插入到结果字符串中。

在您的情况下,您需要使用%c。但是,您当前有%d,相当于整数的%i。您可以更多地了解格式说明符,以了解有关其他选项的更多信息。

这里有一个关于这个主题的有趣读物:

http://www.codingunit.com/printf-format-specifiers-format-conversions-and-formatted-output

答案 2 :(得分:1)

您在printf中使用%d但在整数中使用%d。您想打印一个字符,因此它应该是%c%d替换为%c

有关此链接的更多信息:http://www.lix.polytechnique.fr/~liberti/public/computing/prog/c/C/FUNCTIONS/format.html

答案 3 :(得分:0)

尝试:

#include <stdio.h>

main() {

char c;

while((c = getchar()) != EOF) {
    printf("else if (c == '%c')\n", c);
    printf("\t++n%c;\n", c);
}

return 0;
}

你想要的是不是整体的字符

答案 4 :(得分:-1)

尝试使用

printf("else if (c == '%c')\n", c);
printf("\t++n%c;\n", c);

请参阅printf specifiers

%d说明符适用于整数