在 C 中的 getline 中识别 EOF 与换行符

Jan*_*der 3 c newline getline eof

有什么方法可以识别 getline 是因为换行还是因为 EOF 而结束?

所以,我想区分:

1. 阿尔法\n测试版\n伽马\nEOF

2. 阿尔法\n测试版\n伽马EOF

在第二种情况下,我不想将 gama 作为新字符串读取,我想说的是,最后一个字符串的读取不成功。我正在使用 while 循环来阅读这些行。

我无法编辑传入的数据。

可能有可能通过使用 getchar 来解决这个问题。然而,它使阅读线条更加复杂:-/

非常感谢

Sha*_*awn 5

fgets(),getline()包括字符串中的尾随换行符。因此,只需在成功调用后检查最后一个字符,看看它是否是'\n'. 如果是其他内容,则文件的最后一行没有尾随换行符。