简单的C程序过早退出

时间:2014-02-18 03:15:58

标签: c

我正在尝试创建一个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;  
}

5 个答案:

答案 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)

  1. while循环中的条件在逻辑上是不正确的,尽管根据您的问题它在语法上是正确的。因为ascii 0对应于不可打印的字符,您无法从键盘输入。所以它将永远运行

  2. 有时会跳过。在第7行尝试scanf(" %c", &c);。注意%c

  3. 之前的差距