【发布时间】:2016-05-25 18:09:01
【问题描述】:
我想从这是我的第一篇文章开始,我不是将其作为家庭作业,而是只是介绍自己使用 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;
}
【问题讨论】:
-
你的程序在很多方面都被破坏了。你为什么不做任何错误检查?为什么你总是打印
x,然后读y? -
没关系,我是个白痴,哈哈。 :(
-
所以我删除了 fprintf(buff, "%d", x);和倒带(buff);在 for 循环之外,现在我对用户的输出是正确的。但是,我对文件的输出仍然不正确。
-
请给我看更新代码。我认为您还需要在
fscanf()和fprintf()之间再添加一个rewind(),因为fscanf()调用也会修改文件指针。 -
通过进行上述更改并使用 freopen 作为用户 Paddy 解决了我的问题,感谢您的帮助! :)
标签: c file printf overwrite fclose