gpt4 book ai didi

c - 到达 EOF 后读取文件

转载 作者:太空宇宙 更新时间:2023-11-04 05:09:59 28 4
gpt4 key购买 nike

代码片段在 while 循环后有一个 EOF,之后必须再次重新打开文件 - fopen 被重用。我的问题是是否有办法避免这种笨拙的 fopen 双重使用或以某种方式不使用 EOF?

if (!(f=fopen("D:\\C\\Test.txt", "r"))) 
{
printf("File not existing\n");
}
while ((next=fgetc(f))!=EOF){
if (next=='1') num++;
}

printf("%d\n", num);

f=fopen("D:\\C\\Test.txt", "r");
while (fgets(buf, 1000, f)!=NULL)
printf("%s", buf);

希望我说得足够清楚。

最佳答案

首先,如果要重新打开,您应该在重新打开之前fclose()。如果不这样做,您就是在“泄漏”计算机资源 — 您有一个无法访问的打开文件流。

其次,你可以fseek()到文件的开头,或者你可以 rewind()文件,无需重新打开文件:

fseek(f, 0L, SEEK_SET);
rewind(f);

您还应注意,如图所示的代码报告它第一次打开文件失败,但继续使用该文件,就好像它已经成功一样。这不太可能带来幸福。您还应该检查第二次打开是否成功(如果您重新打开)。仅仅因为文件在一秒钟前还存在并不意味着它仍然存在(尽管失败的可能性很小,我承认)。

关于c - 到达 EOF 后读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20831252/

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