gpt4 book ai didi

c - fgetc 循环返回错误结果

转载 作者:行者123 更新时间:2023-11-30 19:36:35 29 4
gpt4 key购买 nike

我正在使用 fgetc 和字符计数方法来循环遍历字 rune 件并以相反的顺序返回它们。当我尝试这样做时,发生了两件意想不到的事情。当我将循环的第二次迭代粘贴到第一次迭代下方时,它返回一个非常不同的、古怪的结果。同样,除了开头的附加字符之外,第一个循环返回正确的结果。

例如,如果文件包含字符串“Hello”,则第一次迭代将返回 5olleH,第二次迭代将返回 HeHeHeHeHeHeHeHeHeHeHeHeHeHeHe。两个循环的正确结果都是 olleH

这是代码:

FILE *file = fopen( argv[1], "r" );    
count = count_characters(file);
int originalCount = count;

while(count){

ch = fgetc(file);
printf("%c", ch);
fseek(file, -2L, 1); // shifts the pointer to the previous character
count--;

}

count = originalCount;

while(count){

ch = fgetc(file);
printf("%c", ch);
fseek(file, -2L, 1); // shifts the pointer to the previous character
count--;

}

最佳答案

尚不清楚 count_characters() 留下的状态是什么。同样,在第一个循环的末尾,您应该位于文件的开头(实际上在文件之前)。在第二个循环中,您继续向后移动。

我设置缓冲区大小并从文件中读取缓冲区。对于小文件,请阅读整个内容(您的算法应该考虑小于缓冲区的文件)。这对我来说似乎更容易。

关于c - fgetc 循环返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40638774/

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