如何快速确定文本文件中的行数?

时间:2010-01-22 20:28:34

标签: c text-files

我是新手使用C编程我想知道是否有一个函数调用可以用来快速确定文本文件中的行数。

5 个答案:

答案 0 :(得分:6)

#include <stdio.h>
#include <stdint.h>

uint32_t CountRows(FILE* fp, uint8_t line_delimiter){
  uint32_t num_rows = 0;
  uint16_t chr = fgetc(fp);
  while(chr != EOF){
    if(chr == line_delimiter){
      num_rows++;
    }
    chr = fgetc(fp);
  }

  return num_rows;
}

答案 1 :(得分:2)

没有。有一个标准的Unix实用程序可以做到这一点wc。您可以查找wc的源代码以获得一些指示,但它可以归结为简单地从头到尾读取文件并计算行数/工作量等等。

答案 2 :(得分:1)

你必须自己编写,你必须意识到文件的格式......行是否以\n结尾?还是\r\n?如果最后一行不以换行符结束(如所有文件应该),该怎么办?您可能会检查这些,然后计算文件中的换行符。

答案 3 :(得分:0)

不,不是。你必须自己写。

如果行大小固定,则可以使用fseek和ftell移动到文件末尾 然后计算出来。

如果没有,你必须通过文件计数行。

您是否正在尝试创建一系列线条? 像

这样的东西
char* arr[LINES] //LINES is the amount of lines in the file

答案 4 :(得分:0)

int numLines(char *fileName) {
    FILE *f;
    char c;
    int lines = 0;

    f = fopen(fileName, "r");

    if(f == NULL)
        return 0;

    while((c = fgetc(f)) != EOF)
        if(c == '\n')
            lines++;

    fclose(f);

    if(c != '\n')
        lines++;

    return lines;
}