我有一个需要从stdin读取输入的基本C程序。 首先,它使用
从输入文件中读取./Program <input
然后它循环读取,直到没有更多
while(scanf("%s",command)!=EOF){
printf("%s\n",command);
}
之后我需要再次从键盘读取,但它继续无限地垃圾邮件从我的输入文件读取最后一行,不让我使用我的键盘输入。
while(1){
scanf("%s",command);
if(!strcasecmp(command,"exit"))
exitProg();
else if(!strcasecmp(command,"help"))
helpMess();
else
printf("Command \"%s\" not recognized, use command \"help\" for a list.\n",command);
}
答案 0 :(得分:0)
阅读documentation for scanf
,特别是有关返回值的部分,摘录如下:
返回值
成功时,该函数返回成功读取的项目数。如果发生匹配故障,此计数可以匹配预期的读数或更少,甚至为零。 如果在成功读取任何数据之前输入失败,则返回EOF。
您遇到的问题是,一旦文件耗尽数据,程序的标准输入不会恢复到控制终端,它将保留在空文件的末尾。您的scanf调用无声地失败,使command
的内容保持不变。如果你想从两者中读取,你需要找到另一种方法来处理它。
您的shell可能支持此功能。