这个来自"C程序设计语言"的代码如何工作?

Car*_*ers 1 c kernighan-and-ritchie eof

我正在阅读"C编程语言"(第2版)并且在开头附近,它有这样的例子:

while((c = getchar()) != EOF)
    if(c == '\n'){
        ++n1;
Run Code Online (Sandbox Code Playgroud)

我可以看到这在读取文件时如何工作,我理解这种语法......但这只是从控制台读取 - 当从控制台输入字符时,如何发出文件结束信号?我正在使用Windows XP ... MinGW编译器...无论如何,这本书是为waaay早期的系统编写的,有像EOF按钮之类的东西吗?

更新

好吧,我还有一个问题,那就是文件结尾在Windows下如何运作.

如果我只是while(getchar()!=EOF);,那么我可以继续输入字符,直到我通过^ Z发出EOF信号.但是,我必须写一个换行符,然后点击^ Z,然后是另一个换行符...为什么它必须在它自己的行上?

Mat*_*hen 7

Windows使用Ctrl-Z进行EOF,而UNIX使用Ctrl-D.请参阅http://bytes.com/groups/c/217873-eof-windows,以及出色的书籍选择.:)