【发布时间】:2014-03-09 17:45:47
【问题描述】:
我在接受用户输入并在 C 中打印其 ascii 值时遇到问题。我的任务是编写一个程序,该程序只需将单个字符作为输入并打印出其 ascii 值,并且仅在用户停止时停止输入 0(0 的 ascii 值为 48)。我的问题是,如果 printf 似乎在 scanf 后面运行一个循环。
while(x == 1){
scanf("%c\n",&thisChar);
ascii = thisChar;
if(ascii == 48){
x = -1;
}
printf("Ascii: %d\n", ascii);
}
例如,当我从命令行运行它时,我会得到如下信息:
f
0
Ascii: 102
f
Ascii: 48
然后程序结束。使用相同的输入,我希望输出为:
f
Ascii: 102
0
Ascii: 48
然后到此结束。我的逻辑有什么错误?
【问题讨论】:
-
将
"%c\n"更改为" %c" -
总是检查
scanf函数族的返回值! -
请注意,
ascii == '0'完全等同于ascii == 48,只是更容易理解您的代码的含义。