59

我目前正在阅读 K&R 的书并输入第一部分的示例,其中有几个示例如下:

while((c = getchar()) != EOF) {
    //do something
}

我正在 Windows 机器上测试这些示例,从而从cmd提示符运行编译的 exe 文件。

为了测试上面的例子,我如何模拟一个EOF?也就是说,基本上如何在命令提示符下测试示例时使循环停止?

4

5 回答 5

100

要输入 EOF,请使用:

  1. ^Z ( CtrlZ) 在 Windows 中
  2. ^D 在类 Unix 系统上
于 2009-07-13T11:35:14.423 回答
21

参考EOF

Windows: Ctrl+Z
Unix :Ctrl+D
于 2009-07-13T11:35:44.983 回答
2

首先,按:Ctrl^X,下一步:Ctrl^D

于 2013-12-07T18:10:36.113 回答
1

您还可以通过显式为 int 变量赋值 -1 来模拟 EOF。

查看此代码以获得更清晰的信息:

#include<stdio.h>

int main() {    
    // char ch=getchar()
    // int ch=-1;

    if(ch==EOF) { printf("\nEOF: %d",EOF); }
    if((ch!=EOF)==0) { printf("\nit is equal to 0"); }
    if((ch!=EOF)==1) { printf("\nit is equal to 1"); }
    else { printf("\n it is equal to other value"); }
    system("pause");
    return 0;
}
于 2012-08-22T12:37:43.123 回答
1

按下Ctrl+d程序停止并返回 0后,我遇到了同样的问题。如果您使用Clion ,请按Ctrl+Shift+a,而不是键入 Registry,按 Enter 并确保run.processes.with.pty。未选中。之后再次编译程序,然后您可以输入输入,但不要在与输入相同的行上按Ctrl+d ,它将返回 0 或错误。

于 2019-11-09T20:44:19.250 回答