我正在尝试创建一个C程序(我的第一个),它要求用户输入Char输入,并且只要char的ascii值不为0就继续运行。但是,我的代码似乎永远不会到达while循环部分并始终在初始printf语句后退出。我通过在while循环之前添加一个printf语句来确保它不是循环的问题,它仍然没有执行。
#include <stdio.h>
int main(void)
{
char c;
printf("Welcome to ASCII land: ");
scanf("%c", &c);
while((int)'c' != 0) {
printf("type in another char ");
scanf("%c", &c);
}
printf("you're done");
return 0;
}
答案 0 :(得分:1)
while((int)'c' != 0) {
应该是while(c != '0') {
它写入的原始方式将“c”转换为数字并与0进行比较。“c”实际上是值99,因此您说的是while (99 != 0)
。
只需删除“c”中的引号,就会出现“我如何输入ASCII 0(NUL)”的问题?
答案 1 :(得分:0)
在while条件检查中删除'c'中的单引号。您可能正在尝试while ((int) c != '0'
答案 2 :(得分:0)
由于while((int)'c' != 0)
,我只看到无限循环的问题。
这类似于while(99 != 0)
。我建议将其修改为while(c != '0')
。
答案 3 :(得分:0)
'c'
是一个const char,c
是变量。注意差异。
此外,您不能输入ascii值为0的char。您只能输入可打印的char,例如'A'
,'U'
。
答案 4 :(得分:-1)
while循环中的条件在逻辑上是不正确的,尽管根据您的问题它在语法上是正确的。因为ascii 0对应于不可打印的字符,您无法从键盘输入。所以它将永远运行
有时会跳过。在第7行尝试scanf(" %c", &c);
。注意%c