当我输入'y'作为输入字符时,为什么在这种情况下do while循环退出?

时间:2014-02-10 17:12:05

标签: c loops do-while

#include <stdio.h>

int main(void) {
    char c = 'y', temp;
    printf("Press y\n");
    do {
        printf("Press y to continue\n"); // read y again and again
        scanf("%c", &c); // y entered
        printf("%c", c); // loop should repeat but doesn't repeat
    } while(c == 'y');
}

2 个答案:

答案 0 :(得分:4)

不会。因为scanf在第二次迭代时读取\n字符,导致循环终止。在%c之前放置一个空格,以使用之前\n留下的scanf个字符。

 scanf(" %c",&c);

答案 1 :(得分:2)

尝试在%c之前添加一个空格,这是一个scanf怪癖。键入'y'后,空格会吸收换行符。

        scanf(" %c",&c);