c语言中getchar()在while循环中的作用

为什莫第二个getchar删除后就死循环了


#include<stdio.h>
int main() {
    
    char ch;
    ch = getchar();
    while (ch != '\n') {
        if (ch == 'C' || ch== 'c')printf("BEIJING OLYMPIC GAMES\n");
        else if (ch == 'j' || ch == 'J')printf("JAPAN WORLD CUP\n");
        else if (ch == 'k' || ch == 'K')printf("KOREA WORLD CUP\n");
        else printf("%c\n", ch);
        ch = getchar();
    }




    return 0;
}

你是想多组输入吗?如果是的话可以这样写

img


第二个getchar会跳出循环,是因为它接收了你上一次输入ch字符时敲出的回车

img


在前面多加一个getchar就可以实现多组输入

img

如果对你有帮助,还请点个采纳,万分感谢!

第二个getchar是接收下次输入字符的,你删了后除非第一个getchar处不输入直接enter,否则ch永远不等于'\n',就无法退出循环。
另外控制台输入a并回车,实际上会输入a'\n'。第二个getchar会接收余留的'\n',导致循环一次退出。
想要循环输入,12行处应改成:

getchar();
ch = getchar();