EOF!EOF!该如何处理

EOF!EOF!
[code=C/C++][/code]
#include<stdio.h>
main()
{
double nc;
while(getchar()!=EOF)
nc++;
printf("%.0f\n",nc);
}

在c programming的第一章有这么个程序,在一般系统里EOF默认为-1,而getchar只能读取一个字符,键盘上也没有哪“一”个字符对应于EOF,试问while语句怎么样才能跳出循环,怎么样才能输出nc即我所输入的字符数的值?

------解决方案--------------------
EOF不是正常的输入,你需要CTRL+D或者F6或者CTRL+Z中断输入,才能触发一个EOF(一旦EOF,后续任何的对stdin的输入都会失败)
没有任何一个字符是EOF,这是为什么需要把getchar返回值设置为int而不是char,因为当EOF时,系统返回的时4字节的int类型的-1。
------解决方案--------------------
表示字符数只需要int类型的nc就足够了。不过你的nc应该在开始时赋值为0。
------解决方案--------------------
探讨
引用:

EOF不是正常的输入,你需要CTRL+D或者F6或者CTRL+Z中断输入,才能触发一个EOF(一旦EOF,后续任何的对stdin的输入都会失败)
没有任何一个字符是EOF,这是为什么需要把getchar返回值设置为int而不是char,因为当EOF时,系统返回的时4字节的int类型的-1。


谢谢,试了,还是不行,至少是输出不了nc的正确……