【发布时间】:2017-03-12 21:20:58
【问题描述】:
对于我的程序,我有一个标准输出提示
>
然后我的程序从标准输入读取。如果未达到 EOF,则提示循环。我注意到如果我输入了一些东西,例如:
> bee
当我按一次 CTRL-D 时,什么也没有发生。当我再次按 CTRL-D 时,我的提示再次出现。只有当我第三次按下它时,我的程序才会因 EOF 而终止。这是否意味着我的代码有问题?还是这是正常行为?
这是我的代码的简化版本:
(fopen used)
(print prompt)
while((fgets(tester, 1026, input)) != NULL) {
if(there is a # in tester) {
(print prompt)
continue;
}
}
【问题讨论】:
-
哪个代码有问题?
-
Ctrl+D(Linux) 或Ctrl+Z(Windows) 必须是newline之后的第一个按键。但是,我仍然注意到我无法解决的类似问题。 -
这个伪代码混合不编译,唯一似乎解析的部分有括号不匹配。请发布一个最小的完整示例。
-
键盘状态和序列在您的 C 程序“外部”。因此,用于表示
stdin的文件结束的任何内容都是特定于平台的。如果不指定您的计算机/操作系统等,可以考虑这是否是正常行为,但明确的答案需要来自 OP 的更多信息。