问题描述
我试图让用户通过按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}