【发布时间】:2020-03-19 21:27:29
【问题描述】:
所以我的问题是我想打印来自终端的数字,而这些数字与 EOF 不同。
例如,如果输入 007,我希望输出为 7,或者如果我输入 42,我希望输出为 42。
但由于某种原因,我得到的输出是一个随机数,我无法理解。
程序:
#include <stdio.h>
void ex04();
int main() {
ex04();
return 0;
}
void ex04() {
int c;
c = getchar();
while (c != EOF) {
printf("%d\n",c);
c = getchar();
}
}
Input: 007
my Output:
48
48
55
10
Correct Output: 7
任何帮助将不胜感激。
【问题讨论】:
-
提示:
'0' == 48、'7' == 55和'\n' == 10。你熟悉ASCII吗? -
布莱恩猜对了。你得到单个字符。您想要的是将它们打印为 chars 而 not 十进制/ASCII 码值。因此,请使用
printf("%c\n",c);或者,您可以 [出于理解/调试目的] 执行以下操作:printf("%2.2X %c\n",c,c);这将打印 ASCII 十六进制值以及字符本身。
标签: c printing char numbers getchar