getline重新开始

时间:2013-01-28 21:48:12

标签: c for-loop getline

我在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++;   
    }
}

2 个答案:

答案 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);
}
相关问题