小编Tom*_*Tom的帖子

如何在获得新输入之前清除标准输入?

我已经阅读了大约5-10个不同的建议如何清除标准输入,但它们都不适合我的需要.事情就是fflush(stdin)在我的计算机上完美运行,但不幸的是它似乎无处不在,所以我需要具有相同功能的东西.我想尽其他办法清除标准输入时,它不是空的,但需要用户输入时标准输入是空的,这意味着它需要在一个时刻,我不想得到任何输入(+后将其丢弃也无妨).

问题是:stdin在我需要用户输入之前,我可以以某种方式确定IS是空的吗?(如果不是,那么,然后才以某种方式清除它?)类似于:

if (stdin is NOT empty) 
    while (getchar() != '\n')
        continue;
Run Code Online (Sandbox Code Playgroud)

编辑:问题是我stdin逐个加载字符,在某些时候,上一次迭代的输入的一部分可能会或可能不会被丢弃.无论哪种方式,stdin在我要求用户处理另一个输入之前我需要清楚.清除缓冲区本身是没有这样一个大问题,问题是当输入为空当程序到达空地的点会发生什么stdin,因为在那一刻程序需要另一个输入这是会被清除功能被吃掉.这就是我想要摆脱的东西.(当我可以使用时,fflush(stdin);我才知道,对于我的程序的下一行,stdin无论如何,WILL都是空的,没有问题......)

c stdin getchar

12
推荐指数
2
解决办法
2万
查看次数

标签 统计

c ×1

getchar ×1

stdin ×1