如果未完成,请丢弃最后一行

时间:2016-07-05 14:07:54

标签: c string

如果我在缓冲区中加载了文件,如果它未完成,我怎么能丢弃最后一行(不以"\n"结尾)

我想一点一点地使用getline()逐行填充缓冲区,直到缓冲区已满。

有一种更简单的方法吗?

2 个答案:

答案 0 :(得分:1)

如果您知道最大行长度,则循环中的fgets是一个不错的选择。它还有整个“附加换行符(如果有的话)”,因此您可以轻松检查您刚读过的行是否有换行符。

否则只需使用fread批量读入缓冲区,当您读取文件的最后一部分时,检查最后一个字符是否为换行符。如果没有,那么搜索最后一个换行符(strrchr对此是一个很好的函数)并在那里终止缓冲区。

答案 1 :(得分:1)

  

...将文件加载到缓冲区

找到最后一个'\n'

char *end = strrchr(buffer, '\n');
// If \n found 
if (end) {
  // Insure next char is the null character
  *(end + 1) = '\0';
  }
} else {
  buffer[0] = '\0';
}