5

我正在使用 C 中的 get line 函数来读取文件的行。我想循环遍历该函数,以便可以多次读取文件。但由于某种原因,它只在后续循环开始时读取一次(我认为某处仍有指针指向最后一行)。我如何让它重置?

为了让事情更清楚,如果文件中有 100 行,下面,最大的 val 将是 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++;   
    }
}
4

2 回答 2

7

读完文件末尾后,您必须调用

rewind(fp);

再次从流的开头开始。

于 2013-01-28T21:50:57.223 回答
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);
}
于 2013-01-28T22:23:29.070 回答