gpt4 book ai didi

c - feof,似乎不起作用 - 文本文件

转载 作者:太空宇宙 更新时间:2023-11-04 07:39:48 25 4
gpt4 key购买 nike

我正在使用 fgets();

从文本文件中读取行

我有一个循环:while(!feof(fp))

问题是,即使在我到达并读取最后一行之后,程序仍继续进入循环,并且在调试中文件 ptr 仅显示点而不是数据字符串。

如何让它知道我已经到达终点而不是再次进入循环?

        while (!feof(fp)) {
if (strcmp(data2->ID ,data1->ID)<0) {

fseek(fp, backTo, SEEK_SET);
fprintf( fp, "%s",lin2);
fprintf( fp, "%s",lin1);

flag = 1;
}
else
{
strcpy(data1->ID,data2->ID);
strcpy(data1->name,data2->name);
data1->price=data2->price;

}

if(fgets(line2, sizeof(line2),fp)!=NULL)
{
itemSize2=strlen(line2)+1;
strcpy(data2->ID,strtok (line2,","));
}

}

文本文件中只有 2 行,我正在使用 fseek 并转到文件的开头,然后我使用 fprintf 两次并在这些行上写入,之后我应该到达 EOF

最佳答案

你的意思是它进入循环一次?

feof(fp) 如果程序试图读取超出文件末尾的部分,则返回 true,而不是在读取到文件末尾时返回 true。系统不一定知道是否有更多文件(它可能是动态生成的,stdin 是典型示例),但知道它是否到达文件末尾。

您需要在每个 fgets(fp) 之后测试 feof(fp),或者测试 fgets(fp)< 返回了多少个字符,或者执行单字符 getunget

关于c - feof,似乎不起作用 - 文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5355097/

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