gpt4 book ai didi

c - while(!feof(file)) 读取额外的行

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

我在从文件中读取行时遇到问题。基本上,我的代码多读了一行,所有变量都为“0”,即

如果我的文件是:

0, 0, 3, 64, 0, 0, 0, 0
2, 0, 6, 64, 0, 0, 0, 0
4, 0, 4, 64, 0, 0, 0, 0
6, 0, 5, 64, 0, 0, 0, 0
8, 0, 2, 64, 0, 0, 0, 0

它将读入:

Object 1:  0, 0, 3, 64, 0, 0, 0, 0
Object 2: 2, 0, 6, 64, 0, 0, 0, 0
Object 3: 4, 0, 4, 64, 0, 0, 0, 0
Object 4: 6, 0, 5, 64, 0, 0, 0, 0
Object 5: 8, 0, 2, 64, 0, 0, 0, 0
Object 6: 0, 0, 0, 0, 0, 0, 0, 0

这是我的阅读算法:

while (!feof(pfile)) { 

PcbPtr p = createnullPcb();
fscanf(pfile, "%d,%d,%d,%d,%d,%d,%d,%d", &p->arrivaltime, &p->priority, &p->remainingcputime,
&p->memalloc, &p->pr, &p->sc, &p->mo, &p->cd);
char cwd[1024];
char *tmp = getcwd(cwd, sizeof(cwd));
strcat(tmp, "/process");
p->args[0] = tmp;
p->args[1] = NULL;

if (!headi) {
headi = p;
}
else {
enqPcb(&headi, p);
}

}

为什么会这样?感谢您的帮助!

最佳答案

发生的事情是 feof 在尝试读取结束时返回 true。当您到达文件末尾,但还没有尝试读取任何其他内容时,feof 将返回 false

简单来说:feof 并不代表在文件末尾,而是代表试图访问超过文件末尾.

请注意,当您位于文件末尾并尝试读取该额外行时,fscanf 将失败。您可以检查它的返回值以查看它是否能够读取任何内容。

关于c - while(!feof(file)) 读取额外的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10958514/

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