gpt4 book ai didi

c - 在C中覆盖文本文件

转载 作者:行者123 更新时间:2023-12-01 12:29:47 27 4
gpt4 key购买 nike

我想从这是我的第一篇文章开始,我并不是将其作为家庭作业,而只是介绍自己用 C 编写。

我试图用我的 for 循环不断地覆盖文件,但是中途数字开始变得疯狂。

这是输出:

y = 19530

y = 3906

y = 78119530

y = 15623906

y = -1054493078

谁能解释一下为什么在循环的第 3 次迭代中跳转到 78119530?

#include <stdio.h>
#include<stdlib.h>

int main(int argc, char *argv[]){
int x = 19530;
int y;
FILE *buff;
buff = fopen("BUFF.txt","w+");

for(int i = 1; i <= 5; i++){
fprintf(buff, "%d", x);
rewind(buff);
fscanf(buff, "%d", &y);
printf("y = %d\n", y);
y = y/5;
fclose(fopen("BUFF.txt", "w+"));
fprintf(buff, "%d", y);

}

return 0;
}

最佳答案

您正在泄漏文件流。以下行是不正确的:

fclose(fopen("BUFF.txt", "w+"));

您在这里所做的是再次打开文件,并关闭 流,使旧流(保留在 buff 中)有效。

你想要这个:

fclose(buff);
buff = fopen("BUFF.txt", "w+");

或者这个:

freopen("BUFF.txt", "w+", buff);

关于c - 在C中覆盖文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35399085/

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