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