【发布时间】:2013-09-15 23:00:22
【问题描述】:
只是有点困惑,我希望有人能解决 - 这个问题问: “我们的 getch 和 ungetch 不能正确处理后推的 EOF。确定如果 EOF 被后推,它们的属性应该是什么,然后实现你的设计”。
在代码原样的情况下,一个 EOF 被推回,用 getch() 重新获取,这会导致一个循环,例如:
while ((c = getch()) != EOF)
putchar(c);
在从缓冲区遇到它时终止。我看不出这种行为是如何不正确的。当然,理论上(大多数情况下)EOF只会遇到一次,如果它被推回然后以这种方式从缓冲区中读取,那真的没关系吗?我希望有人能为我澄清这个问题的目的 - 我知道大多数解决方案都涉及编程 ungetch() 以忽略 EOF,我只是不明白这一点。
我确信有一个,因为丹尼斯·里奇和布赖恩·克尼汉比小我聪明得多 - 只是希望有人能指出这一点。谢谢:-)
问候, 菲尔
【问题讨论】: