我在C中有一个文件流,我想知道它中有多少行而不遍历文件。每条线的长度相同。我怎么能这样做?
答案 0 :(得分:3)
这样的事情怎么样:
fgets
并找出一行使用fseek
和ftell
fseek(fp, 0, SEEK_END);
size = ftell(fp);
除以行的大小
您还可以使用与fseeko
一起使用的ftello
和off_t
。
答案 1 :(得分:2)
如果可以安全地假设所有行的长度相等,则只需读取第一行,获取其长度,然后获取文件大小,并按行长度划分文件大小。
这仅适用于固定宽度编码(ASCII-7,各种8位ANSI编码,UTF-32);使用可变宽度编码(例如UTF-8),您必须扫描整个文件,因为字符串长度不一定与字节数成比例。
答案 2 :(得分:0)
读取一行stat()
文件到get the total size,将总大小除以第一行的长度。
除了使用stat()
,您还可以fseek()
到文件的末尾,然后使用ftell()
来获取大小。
答案 3 :(得分:0)
取ftell()
并除以线的长度。