【发布时间】:2013-05-11 06:06:40
【问题描述】:
我编写了一个简单的交互式程序,它需要用户输入。 在读取特定输入后,它会执行特定操作,但首先通过从流中读取任何剩余字符来检查用户是否输入了太多命令。
我的问题是:如果流中没有剩余的字符,它会卡住,直到用户按下回车键。有没有办法覆盖它?
这是检查输入流中剩余字符的函数:
int check_end_of_stream(void){
char c;
c=getchar();
for(; c!='\n' && c!=EOF; c=getchar())
if(c!=' ' || c!=','){
printf("You have written too many statements");
printf(" in your command line!\n");
return 0;
}
return 1;
}
提前谢谢你!
附:我在 Linux 中编程
【问题讨论】:
-
你需要超时机制,用
read()代替getchar() -
阅读:getchar() non-blocking 将帮助您
-
有办法做到这一点,但没有标准的办法做到这一点。 Unix 上的方式与 Windows 上的方式不同,因此您至少应该指定要在其上工作的系统。对于 Unix,您可能会查看 curses 库,或查看非阻塞 I/O 选项,并且可能还有其他一些技术,例如超时。