独立于操作系统的清除缓冲区

Clear buffer independent of the operating system

我想知道如何清除标准输入缓冲区,无论我使用的是什么操作系统。 我知道在 Windows 中我可以使用 fflush 和 Linux fpurge,但我想要一个适用于两者的单一解决方案(不一定是函数) .

根据 "clear the standard input buffer" 的含义,这可能会:

int c;
do c = getchar(); while (c != EOF && c != '\n');

这最多吸收 EOF 或换行符,以先到者为准。

这不是您想要的主要情况是,如果您不希望它在用户按下 Enter 之前可能会阻塞。在那种情况下,你就是 SOL;没有通用机制。