首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >K&R C练习4-9:为什么忽略EOF?

K&R C练习4-9:为什么忽略EOF?
EN

Stack Overflow用户
提问于 2013-09-15 23:00:22
回答 1查看 632关注 0票数 6

只是有点困惑,我希望有人能澄清-这个问题问:“我们的getch和ungetch不能正确处理一个推回EOF。决定他们的属性应该是什么,如果一个EOF被推后,然后执行您的设计”。

对于代码本身,EOF被推回,用getch()重新获取,这会导致一个循环,如:

代码语言:javascript
复制
while ((c = getch()) != EOF)
    putchar(c);

若要在从缓冲区中遇到它时终止。我看不出这种行为是如何不正确的。当然,由于EOF理论上(大部分)只会遇到一次,如果它被推回,然后以这种方式从缓冲区读取,这真的不重要吗?我希望有人能为我澄清这个问题的目的--我知道大多数解决方案都涉及编程ungetch()来忽略EOF,我只是不明白问题的意义。

我肯定有一个,因为丹尼斯·里奇和布莱恩·克尼根比我小的时候聪明多了--只是希望有人能指出这一点。谢谢:-)

你好,菲尔

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-16 01:09:28

根据本书第19页的内容,buf的定义是char buf[BUFSIZE];

我们必须声明c是一个大到足以保存getchar返回的任何值的类型。我们不能使用char,因为c必须足够大,除任何可能的字符外,还可以容纳EOF。因此,我们使用int。

然后我们得到答案:

代码语言:javascript
复制
int buf[BUFSIZE];
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18818349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档