首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getline startover

getline startover
EN

Stack Overflow用户
提问于 2013-01-29 05:48:12
回答 2查看 385关注 0票数 5

我在C中使用get line函数来读取文件中的行。我想循环遍历这个函数,这样我就可以将文件读n次。但是,由于某些原因,它只在后续循环的开头读取一次(我认为在某个地方仍然有一个指针指向最后一行)。我如何让它重置?

更清楚地说,如果下面的文件中有100行,那么最大的val将会是100,尽管它应该会达到300。

谢谢!

代码语言:javascript
复制
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++;   
    }
}
EN

回答 2

Stack Overflow用户

发布于 2013-01-29 05:50:57

一旦读过了文件的末尾,就必须调用

代码语言:javascript
复制
rewind(fp);

从流的开头重新开始。

票数 6
EN

Stack Overflow用户

发布于 2013-01-29 06:23:29

如前所述,您可以使用rewind()函数重新开始,当然,另一个选项是将文件的打开/关闭移动到您的循环中:

代码语言:javascript
复制
FILE* fp; = myfopen (inf, "r");

for (i=0;i<num;i++)
{
    fp = myfopen(inf, "r");
    while (getline (&line, &len, fp) != -1)
    {  
        val++;   
    }
    fclose(fp);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14571850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档