有没有办法区分getline是因为换行符还是因为EOF而结束了呢?
我想区分以下两种情况:
1. alfa \n beta \n gama \n EOF
2. alfa \n beta \n gama EOF
在第二种情况下,我不想将gama读入一个新的字符串,并且我想说,最后一行的读取失败了。我正在使用while循环读取这些行。
我无法编辑传入的数据。
可能可以通过使用getchar来解决这个问题,但它会使读取行更加复杂 :-/
非常感谢。
我想区分以下两种情况:
1. alfa \n beta \n gama \n EOF
2. alfa \n beta \n gama EOF
在第二种情况下,我不想将gama读入一个新的字符串,并且我想说,最后一行的读取失败了。我正在使用while循环读取这些行。
我无法编辑传入的数据。
可能可以通过使用getchar来解决这个问题,但它会使读取行更加复杂 :-/
非常感谢。
feof
函数来测试流中的EOF
,但它只有在你尝试读取文件末尾之后才会返回true
。 - John Bodegetline
。在这两种情况下,你将逐行获取回复。在 EOF 时,返回值将是-1。但是,直到第四次调用才会得到EOF的返回值。在第一种情况下,返回序列将是:5,5,5,-1
,而在第二种情况下,它将是:5,5,4,-1
。只有最后一行可能会不同,你可以查看:buf[len - 1] == '\n'
。无法同时在同一次调用中获取非零长度和 EOF 表示。 - Craig Estey