gpt4 book ai didi

c - 文件 I/O 问题 - 冲突的 while 循环

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

    while (fgets(line, sizeof line, f)) { 
int len = strlen(line);
if (length!=len-1){
fputs("max errorz\n", stderr);
exit(1);
}
break;

}

while ((c = getc(f)) != EOF) {
putchar(c);
}

我在显示文本文件中的所有内容时遇到问题。目前,第一个 while 循环成功运行,它检查文件的长度(字符),以及它是否与参数匹配。我已经完成了这个,但是对于检查输入是否匹配文件长度后的第二个循环,现在我想完全显示文本文件。但是,它只显示文件的 2/3 行。第一行看起来像是被第一个循环“采用”了。

谁知道这是为什么?

我试过将第二个循环放在第一位,它起作用了(显示文件的完整内容)。

最佳答案

当第一个循环从文件中读取时,它会增加读取的偏移量。之后,您希望它能正常工作,对吗?

fgets(line1, sizeof line1, f);
fgets(line2, sizeof line2, f);
/* line1 and line2 now hold the first two lines */

因此在 fgets 之后调用 getc 的行为方式相同 - 它从您停止的地方开始读取。

只需在循环之间再次回到开头:

fseek(stream, 0L, SEEK_SET);

或者如 pzaenger 所建议的那样,等价物

rewind(f);

关于c - 文件 I/O 问题 - 冲突的 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25263504/

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