trick getchar屏蔽换行符(others terminal menu.c) - HeavyYuan/A-CD-Record-Management-System GitHub Wiki

在commit 4fbfb0fe87dd285af7ff5b86a12f1d16220411bf的实现中

选择一个选项回车后,会出现预期之外的输出。

这里的原因是,getchar每次只能处理1个字符,我们的实际输入是“字符/n”,所以在处理完“字符后”,在循环不退出的情况下,会继续处理/n

正是/n出发了预期之外的信息的输出。

解决方法:屏蔽/n

当检查到是/n时,就不再继续执行后面的代码,而是继续等待输入,核心代码:

do{
  selected = getchars();
}while(selected == '\n');