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);
}
答案 0 :(得分:5)
更改
char zerovalue=0;
到
char zerovalue = '0'; // 0 != '0'
答案 1 :(得分:1)
您输入的字符'0'与整数0不同。
'0'位于ASCII字符集的中间。
答案 2 :(得分:0)
请注意,此答案遵循问题的编辑(b部分)
我不知道为什么你突然宣布char
为char[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);
}
}