gpt4 book ai didi

c - 如何使用feof(FILE *f)?

转载 作者:行者123 更新时间:2023-12-04 10:39:19 24 4
gpt4 key购买 nike

我在 do-while 循环上遇到困难,它应该停止当我们到达文件末尾时。这是循环代码:

do  {
if (pcompanyRow[0] != '#' && pass == 1) {
strtok(pcompanyRow, ":");
pcompanyName = strcpy(pcompanyName, strtok(NULL, ""));
pass = 2;
fgets(pcompanyRow, 1024, f);
}
if (pcompanyRow[0] != '#' && pass == 2) {
strtok(pcompanyRow, ":");
pcompanySMSPrice = strcpy(pcompanySMSPrice, strtok(NULL , ""));
pass = 3;
fgets(pcompanyRow, 1024 , f);
}
if (pcompanyRow[0] != '#' && pass == 3) {
strtok(pcompanyRow, ":");
pcompanyMMSPrice = strcpy(pcompanyMMSPrice, strtok(NULL, ""));
pass = 4;
fgets(pcompanyRow, 1024, f);
}
if (pass == 4) {
AppendCompanyNode(pcompanyList, pcompanyName, pcompanySMSPrice, pcompanyMMSPrice);
pass = 1;
}
} while (!feof(f));

用调试器运行后,我发现我遇到的所有崩溃问题都是因为它即使到达整行也没有跳出这个循环。

应该怎么写才正确?

最佳答案

永远不要使用 feof() 作为循环的退出指示器。 feof() 仅在读取文件末尾 (EOF) 后为 TRUE,而不是在到达 EOF 时为 TRUE

来源here .它还详细说明了问题以及解决方法。

关于c - 如何使用feof(FILE *f)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4299296/

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