循环问题,while循环执行额外的迭代

时间:2014-02-25 06:52:43

标签: c while-loop

程序:

#include <stdio.h>
int main() {
    char t;
    while(1) {
        t='\0';
        printf("\nExit?(y/n): ");
        scanf("%c", &t);
        if( t=='y' || t=='Y') {
            return 0;
        }
        else
        printf("\nContinuing...");
    }
    return 0;
}

输出:

$ vim Return.c
$ gcc -o Return Return.c
$ ./Return

Exit?(y/n): n

Continuing...
Exit?(y/n):
Continuing...
Exit?(y/n): n

Continuing...
Exit?(y/n):
Continuing...
Exit?(y/n): y
$

'n'作为输入后

Continuing...
Exit?(y/n):

循环一次,不接受用户的输入。如果代码中有任何错误,请告诉我

2 个答案:

答案 0 :(得分:2)

您需要确保scanf丢弃换行符。试试这样:

scanf(" %c", &t);

答案 1 :(得分:2)

尝试在scanf语句的格式标识符中给出空格。尝试像

这样的东西
scanf(" %c",&t);
相关问题