如何避免在可移植上下文中按Enter键清空输入缓冲区?

时间:2018-07-23 10:17:39

标签: c input buffer getch

问题

我通常使用fgets()getchar(),但是现在我需要使用getch(),因为我不想按 enter 发送字符到输入缓冲区。

我尝试过的

当我使用fgets()getchar()时,我还使用了:

int c;
while ((r = getchar()) != '\n' && r != EOF){}

但是现在,如果我在getch()之前使用它,则需要我按下 enter ,这是我不想要的。

是否有任何便携式解决方案来清空输入缓冲区?

1 个答案:

答案 0 :(得分:2)

您不能在可移植的上下文because it's a conio.h, not a stdio.h function中使用getch()。 有lengthy threads on this topic,总体假设是无法做到,只能以躲避的方式解决。

我建议您修改代码和应用程​​序以检查天气,或者是否需要使用getch()之类的功能来输入天气,或者是否有其他方法可以实现相同的目标。视使用情况而定,通常只是表面上不要按 Enter