用C计算文件中的行数

Counting number of lines in the file in C

我正在编写一个函数来读取给定行中的行数。某些文本文件可能不以换行符结尾。

int line_count(const char *filename)
{
   int ch = 0;
   int count = 0;    
   FILE *fileHandle;

   if ((fileHandle = fopen(filename, "r")) == NULL) {
      return -1;
   }

   do {
      ch = fgetc(fileHandle);
      if ( ch == '\n')
         count++;
   } while (ch != EOF);

   fclose(fileHandle);

   return count;
}

现在函数没有正确计算行数,但我想不出问题出在哪里。非常感谢您的帮助。

fgets() 读取到换行符或缓冲区已满

char buf[200];
while(fgets(buf,sizeof(buf),fileHandle) != NULL)
{
  count++;
}

fgetc() 在这里是一个问题,因为您首先遇到 EOF 并退出 do while 循环并且从未遇到 \n 字符,因此最后一行的计数保持不变在你的 file.If 中,你的文件中恰好有一行 count 将是 0

这是另一个选项(除了跟踪 EOF 之前的最后一个字符)。

int ch;
int charsOnCurrentLine = 0;

while ((ch = fgetc(fileHandle)) != EOF) {
    if (ch == '\n') {
        count++;
        charsOnCurrentLine = 0;
    } else {
        charsOnCurrentLine++;
    }
}
if (charsOnCurrentLine > 0) {
    count++;
}