【发布时间】:2012-03-28 01:50:14
【问题描述】:
我有一个包含大量数字的文件,每个数字用空格分隔。
如:124 1212 5 654 74231 ...
如何快速找到该文件中的第 N 个数字?
我认为fseek() 可能不起作用,因为它是按字节衡量的,我可以通过以下方式获得第 N 个数字:
int i;
for (i=0;i!=N-1;++i) fscanf(somefile,"%d",&variable);
但我想可能有一些更有效的方法?
【问题讨论】:
-
一旦您使用 fscanf 等在文件中找到了一个位置,您可以使用 ftell() 获取文件指针的字节位置,您可以将其传递给 fseek 以返回该位置位置几乎是即时的。
-
@MarcB 不幸的是,我不需要返回刚刚找到的号码。我可能会在找到数十万个其他号码后返回。
-
除非文件中存储的数字具有某些属性(例如,它们都是 3 位长),否则唯一的方法是通读整个文件,直到达到第 N 个整数。
-
或者索引该死的文件以供以后读取,也许? :q