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

标签 c input buffer getch

问题

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

我尝试了什么

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

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

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

是否有任何可移植解决方案可以清空输入缓冲区?

最佳答案

您不能在可移植上下文中使用 getch() because it's a conio.h, not a stdio.h function 。 有lengthy threads on this topic总体假设是这是不可能完成的,只能以一种狡猾的方式解决。

我建议您修改代码和应用程​​序来检查天气是否需要使用类似getch()的函数进行输入,或者是否有其他方法可以做到达到同样的目标。根据用例,不按 Enter 通常只是装饰性的。

关于c - 如何避免在可移植上下文中按 Enter 清空输入缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51476437/

相关文章:

c - 正确退出Pebble app_event_loop函数

c - 汉明重量(数字中1的个数)混合C与组件

javascript - thymeleaf - 有没有办法传递无法从输入元素中编辑或删除的字符串?

c++ - 缓冲通信速度噩梦

c - Qsort比较函数

java - 解析用户输入以关联数组值

javascript - Apple.com 搜索喜欢 Transitions

python - "chunk"、 "block"、 "offset"、 "buffer"和 "sector"是什么意思?

environment-variables - GNU screen : Environment variables

c - 删除功能是否保证删除文件?