c='q';
while(c=='q')
{
printf("hello");
scanf("%c",&c);
}
为什么循环在没有任何理由的情况下退出?
答案 0 :(得分:6)
循环没有理由退出。 scanf
来电将从stdin
读取一个字符并将其存储在c
中,从而更改c
的值。在测试循环条件时,大概c
不再==
'q'
(例如,您键入的内容不是“q”)。
如果您尝试循环直到用户不键入“q”:
do {
printf("hello");
scanf("%c", &c);
}
while (c != 'q');
但请注意,在大多数控制台系统上,scanf
将不会返回,直到用户输入完整的文本行并按下回车键。如果您希望按键进行操作,则可能需要查看其他功能。
答案 1 :(得分:1)
我假设您希望用户输入'q'
表示退出,并且您希望循环在c == 'q'
时退出。
尝试:
c='\0';
while(c !='q')
{
printf("hello");
scanf("%c",&c);
}