gpt4 book ai didi

不能使用 fgets() 读取 "consuming it up"之后的文件?

转载 作者:太空宇宙 更新时间:2023-11-04 01:26:14 24 4
gpt4 key购买 nike

调试了一段时间后,发现C:中的fgets()函数有问题

示例代码:

....
char arr[50];
File* file=fopen("mytext.txt","r");

for(int i=0;i<=100;++i){
....
fgets(arr,sizeof(arr),file); //I use a for loop here for example
.... //just to illustrate that I use the
...do some stuff... //fgets() function lots of times
}

fgets(arr,sizeof(arr),file); //And now I use it again but get nothing
//because I have used the fgets() to consume the file up
....

所以你看,我想在这里说的是:当你使用 fgets() 从文件中获取数据的次数太多时,它会到达文件的末尾。然后当你再次使用它时,它不会返回任何内容(只是一个空指针但没有错误!!)

我在调试了一段时间后发现了这个问题。我注意到其他格式输入函数也存在同样的问题,例如 scanf()

所以我想知道是否有一种方法可以刷新机器并进行更新,以便我可以再次使用 fgets() 函数。谢谢。

最佳答案

您使用的是一个文件指针,fgets() 一直运行直到到达 EOF。因此,当没有任何内容可读时,它返回 NULL 表示 EOF。因此,为了到达文件的开头,您需要使用

rewind(file);

并使用 fgets() 再次读取问题不在于 fgets(),因为您理解在文件访问期间文件指针不断移动。

关于不能使用 fgets() 读取 "consuming it up"之后的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30413264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com