我在C中使用get line函数来读取文件的行。我想遍历该函数,以便我可以多次读取该文件。但是出于某些原因,它只会在后续循环的开头读取一次(我认为在某处仍然指向最后一行的指针)。如何让它重置?
为了使事情更清楚,如果文件中有100行,如果下面有最大值,那么最大值将达到100,即使它应该达到300.
谢谢!
FILE* fp = myfopen (inf, "r");
char* line = NULL;
size_t len = 0;
int num=3
int val=0
for (i=0;i<num;i++)
{
while (getline (&line, &len, fp) != -1)
{
val++;
}
}
答案 0 :(得分:4)
读完文件末尾后,您必须致电
rewind(fp);
再次从流的开头开始。
答案 1 :(得分:0)
如上所述,您可以使用rewind()
函数重新开始,另一个选项当然是将文件的打开/关闭移动到循环中:
FILE* fp; = myfopen (inf, "r");
for (i=0;i<num;i++)
{
fp = myfopen(inf, "r");
while (getline (&line, &len, fp) != -1)
{
val++;
}
fclose(fp);
}