scanf导致循环提前终止

时间:2012-03-07 16:00:57

标签: c++ c

c='q';
while(c=='q')
 {
   printf("hello");
   scanf("%c",&c);
 }

为什么循环在没有任何理由的情况下退出?

2 个答案:

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