【发布时间】:2015-09-18 12:47:55
【问题描述】:
对于我的作业,我的程序的预期输入类似于
./program "hello" < helloworld.txt。然而,这样做的问题是我必须分析程序中的每一行,所以我将行尾的守卫用作:
while((c = getchar()) != EOF) {
if (c == '\n') {
/*stuff will be done*/
但是,我的问题是,如果 helloworld.txt 文件包含:
hello
world
它只会读取第一行(如果有更多行,则读取到倒数第二行)。
为了解决这个问题,我必须严格地创建一个新行,使helloworld.txt 看起来像:
hello
world
//
还有其他方法可以解决这个问题吗?
【问题讨论】:
-
您的原始文件是否在
world末尾有换行符?有些编辑添加了这些,有些则没有。也许在 EOF 和\n上“做点什么”? -
@DevSolar 我只是假设最坏的情况是标记它的人使用没有新行的测试文件。
-
但在这种情况下,当您遇到 EOF(并且可能退出)时,您已经阅读了字符 但没有完成“stuff”。这就是你最后一行没有显示的原因。