getchar的疑问
问题来自Brian W.Kernighan & Dennis M.Ritchie写的c程序设计语言第二版本.P11
#include <stdio.h>
int main ()
{
int c;
while ( ( c = getchar () ) != EOF )
putchar ( c );
}
我的理解是给入一串输入(就当字符)进入内存缓冲区, 回车后自动给入一个结束符号,然后在一个一个判断如果不是结束符号(EOF)不是则输出屏幕.最后到达结束符号后main退出.我用tc2.0调试但是该程序不能正常退出.百思不得其解.
书上对该程序的解释摘录如下:
getchar函数在没有输入时返回一个特殊的值即EOF.
while先读入一个字符并将其赋给c,然后测试该字符是否为文件结束标记....
最后到达输入结束位置时,while循环语句终止执行,从而整个main程序执行结束.
为什么不能正常退出程序(mian程序不会执行结束)?运行的结果像是无限循环执行该程序.难道不会自动赋EOF??那是不是该书讲的就有问题????? 我对getchar运行的理解有错误吗????





