c文件流中的行数

时间:2012-02-24 11:06:00

标签: c file-io

我在C中有一个文件流,我想知道它中有多少行而不遍历文件。每条线的长度相同。我怎么能这样做?

4 个答案:

答案 0 :(得分:3)

这样的事情怎么样:

  • 执行fgets并找出一行
  • 多长时间
  • 使用fseekftell

    查找文件的大小
    fseek(fp, 0, SEEK_END);
    size = ftell(fp);
    
  • 除以行的大小

您还可以使用与fseeko一起使用的ftellooff_t

答案 1 :(得分:2)

如果可以安全地假设所有行的长度相等,则只需读取第一行,获取其长度,然后获取文件大小,并按行长度划分文件大小。

这仅适用于固定宽度编码(ASCII-7,各种8位ANSI编码,UTF-32);使用可变宽度编码(例如UTF-8),您必须扫描整个文件,因为字符串长度不一定与字节数成比例。

答案 2 :(得分:0)

读取一行stat()文件到get the total size,将总大小除以第一行的长度。

除了使用stat(),您还可以fseek()到文件的末尾,然后使用ftell()来获取大小。

答案 3 :(得分:0)

ftell()并除以线的长度。