c语言小问题?

[复制链接]
查看11 | 回复4 | 2011-8-24 09:03:19 | 显示全部楼层 |阅读模式
while((c=getchar())!=EOF)使这个循环结束不是按ctrlz吗,为什么回车也行呢
回复

使用道具 举报

千问 | 2011-8-24 09:03:19 | 显示全部楼层
在计算机术语缩写通常为EOF(EndOfFile),在操作系统决定资料源无更多的资料可读龋资料源通常称为档案或串流。在C语言,或更精确地说成C标准函式库中表示:文件结束符(endoffile)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。应用档案存取或其它I/O功能可能传回等于象征符号值(巨集)EOF指示档案结束的情形发生。实际上EOF的值通常为-1,但它依系统有所不同。巨集EOF会在编译原始码前展开实际值给预处理器。C语言中,EOF常被作为文件结束的标志。还有很多文件处理函数处错误后的返回值也是EOF,因此常被用来判断调用一个函数是否成功。
回复

使用道具 举报

千问 | 2011-8-24 09:03:19 | 显示全部楼层
按ctrlz只是自己调试运行的时候用的。如果是读入文件的话,是读到文件尾就结束了。
回复

使用道具 举报

千问 | 2011-8-24 09:03:19 | 显示全部楼层
任何C按ENTER都是结束的。。你可以去试一下,这个程序本身是没有问题的,原程序是不是这个??#includestdio.h/*copyinputtooutput;2ndversion*/main(){intc;while((c=getchar())!=EOF)putchar(c);}
回复

使用道具 举报

千问 | 2011-8-24 09:03:19 | 显示全部楼层
是这个循环结束时先按下ctrlz,再按一下enter,牵扯到缓冲区的问题,比较复杂,建议初学者不要太钻了,不然的话,可能会能混
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行