嗨,我对编程比较陌生,所以请耐心等待。
我想制作一个输入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
不能作为变量工作?
非常感谢你的帮助!
答案 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)