我正在阅读Ritchie&Kernighan所着的“C Programming Language”一书。 而且我对getchar()函数中EOF的使用感到困惑。 首先,我想知道为什么EOF的值是-1,为什么getchar()!=EOF是0.请原谅我的问题,但我真的不明白。 我真的尝试过,但是我做不到。 然后我试图运行该书上的例子,可以使用下面的代码来计算字符的数量,但似乎我从来没有离开循环,即使我按下input,所以我想知道什么时候我会到达EOF? main(){ long nc; nc = 0; while (getchar() != EOF) ++nc; printf("%ld\n", nc); } 然后,我在C中的EOF问题中读到了同样的问题。 大多数人build议,而不是使用EOF,使用终止符\ n或空终止符'\ 0',这是很有道理的。 这是否意味着书上的例子有其他目的?
码: #include <stdio.h> #define NEWLINE '\n' #define SPACE ' ' int main(void) { int ch; int count = 0; while((ch = getchar()) != EOF) { if(ch != NEWLINE && ch != SPACE) count++; } printf("There are %d characters input\n" , count); return 0; } 题: 一切正常,它会忽略空格和换行符,并输出input到屏幕上的字符数(在这个程序中,我只是把逗号,感叹号,数字或任何可打印的特殊符号字符如&符号作为字符) EOF模拟是^z 。 但是当我把这一行input到程序中时有什么问题。 例如我input这个: abcdefg^z ,这意味着我input一些字符之前,并在同一行^z 。 程序不是终止程序并打印出全部字符,而是继续要求input。 EOF终止字符input仅在单行指定^z时才起作用,或者这样做: […]