我在C中使用get line函数来读取文件中的行。我想循环遍历这个函数,这样我就可以将文件读n次。但是,由于某些原因,它只在后续循环的开头读取一次(我认为在某个地方仍然有一个指针指向最后一行)。我如何让它重置?
更清楚地说,如果下面的文件中有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++;
}
}发布于 2013-01-29 05:50:57
一旦读过了文件的末尾,就必须调用
rewind(fp);从流的开头重新开始。
发布于 2013-01-29 06:23:29
如前所述,您可以使用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);
}https://stackoverflow.com/questions/14571850
复制相似问题