文件读写问题与读写指针定位问题

Yuchi1989 2009-05-21 07:58:42
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
FILE *p;
int i=0,j=0;
long int a=0;
if((p=fopen("zs.txt","w"))==NULL) //以写的形式打开文件
{
printf("Can not open source file");
exit(0);
}
srand((unsigned) time(NULL));
for(i=0;i<5;i++)
{

fprintf(p,"%d ",(rand()%5+1));
} //产生1——5的5个随机数,将随机数写入文件
fclose(p);
if((p=fopen("zs.txt","r+"))==NULL) //以读写方式打开文件
{
printf("Can not open source file");
exit(0);
}
for(j=0;j<5;j++)
{
fscanf(p,"%d",&i);
fseek(p,a,SEEK_SET);
fprintf(p,"%d ",i+1);
a=ftell(p);
} //读入一个整数,把它加一,然后重新覆盖写入
fclose(p);
return 0;
}
本程序希望达到效果为使产生的五个随机数的文件,每个数加一。
但是本程序出现问题,从第三个数开始fscanf无法读入新数,每次文件结果后四个都是一样的。
不知道是为什么,希望高手给讲解一下啊。
...全文
92 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
liliangbao 2009-05-21
  • 打赏
  • 举报
回复
 for(j=0;j <5;j++) 
{
fscanf(p,"%d",&i);
fseek(p,a,SEEK_SET);
fprintf(p,"%d ",i+1);
fflush(p); //及时将数据写入文件
a=ftell(p);
}
ltc_mouse 2009-05-21
  • 打赏
  • 举报
回复
for(j=0;j <5;j++)
{
fscanf(p,"%d",&i);
fseek(p,a,SEEK_SET);
fprintf(p,"%d ",i+1);
fflush(p);
a=ftell(p);
} //读入一个整数,把它加一,然后重新覆盖写入

以读写方式操作一个文件时,需要保证写完后,数据确实写回文件了,否则可能导致后面的操作失败。所以fprintf后增加fflush调用~

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧