c - 为什么这个函数最后需要 getchar()?我不明白为什么它在那里

标签 c getchar

void getInputData(void) {
    char c = 0;
    while (c != 'x') {
        printf("Enter a letter:");
        fflush(stdout);
        c = getchar();
        printf("You entered: %c \n",c);
        fflush(stdout);
        getchar();
    }
    printf("\nYou entered x and the loop exited\n");
}

为什么这个函数最后的 getchar() 是必须的?我不明白为什么它在那里。

最佳答案

假设您在您的程序中使用行缓冲,完美用户输入每次跟随字母直到命中“x”:
\n
H\n
我\n
S\n
x\n
只有当您从键盘上按 ENTER/RETURN 键时,发送数据才有效。您应该处理 \n 换行符以获得下一个字符,这就是为什么需要使用 getchar() 的原因。

关于c - 为什么这个函数最后需要 getchar()?我不明白为什么它在那里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40349902/

相关文章:

c - getchar() 时输入回车键;被执行

c - 根据 Enter 键检查读取字符时出现 getchar 问题

c - 我应该返回函数中的指针以便我可以使用它们吗?例如,我应该返回 table2_entry 吗?

c - 如何让 pthreads 在 Windows 中工作?

c - 在C中,为什么有时只需要getchar()来删除字符?

c - 从标准输入 C 读取所有数据

c - 将双指针传递给函数以获取链表的起始地址(C)

c - Sqlite 通过 C 不返回普通 sqlite 所在的结果

c - Long Long int 修剪数字小于假定的 64 位容量?

c - STDIN 缓冲区和 getchar() 指针在连续调用期间如何变化?