输入0后,为什么我的while循环中止?

时间:2014-09-23 04:28:35

标签: c

char inputvalue=7;
char zerovalue=0;

while(inputvalue != zerovalue)
{
    scanf (" %c",&inputvalue);
    printf("%c\n",inputvalue);

}

为什么我输入0后我的while循环中止?

感谢您的回答。问题b: 我该如何解决这个问题,以便按预期工作?

char inputvalue[100]='48';
char zerovalue[100]='0';

while(inputvalue != zerovalue)
{
    scanf (" %c",&inputvalue);
    printf("%c\n",inputvalue);

}

3 个答案:

答案 0 :(得分:5)

更改

char zerovalue=0;  

char zerovalue = '0';  // 0 != '0'

答案 1 :(得分:1)

您输入的字符'0'与整数0不同。

'0'位于ASCII字符集的中间。

答案 2 :(得分:0)

请注意,此答案遵循问题的编辑(b部分)

我不知道为什么你突然宣布charchar[100] s。

ASCII 0(char) 48(char) '0' 不是 '48'

以下作品(和编译)

#include <stdio.h>

int main()
{
     char inputvalue = 0;             //initialised to 0, just so no undefined behaviour can happen
     char zerovalue  = '0';           //this is ASCII '0' (== 48)

     while(inputvalue != zerovalue)
     {
        scanf (" %c",&inputvalue);
        printf("%c\n",inputvalue);
     }
}