在“按Enter继续”之后清除标准输入?

问题描述

我试图让用户通过按ENTER键确认他的操作-如果按下任何其他键,则不会发生所述“操作”。

但是,我想清除if((ch=getchar())=='\n') {...}而不是简单的stdin,以防用户输入类似hello\n内容,而不是在下次输入时让其读取在我的程序中。

我用来清除stdin函数是:

void eat()
{
    int eat; while ((eat = getchar()) != '\n' && eat != EOF);
}

但是,这种策略使用户不得不按ENTER键两次,因为它''应该使换行符将输入发送给我的换行符程序(在终端中)。

最简单,最优雅的解决方案是什么?

注意::我不能使用不可移植的解决方案,例如将控制台设置为使用POSIX terminos.h立即发送每个字符。

解决方法

听起来像您想读一行,然后检查它是否为空?看起来像是fgets(...,stdin)

的工作
char mystring [100];
fgets (mystring,100,stdin);
if (*mystring == '\n') {//confirmed}