| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 870 人关注过本帖
标题:求教高手,关于二进制文件读写问题
取消只看楼主 加入收藏
huangzhenfan
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-7-15
结帖率:0
收藏
已结贴  问题点数:20 回复次数:0 
求教高手,关于二进制文件读写问题
问题:把一个整数插入到一个记录了若干整数的二进制文件的前部
想法:
假设被插入的整数记录在变量 int i;中
先取出文件中第一个整数存放在变量int t;中
向文件写入 i 的值,然后
i=t;
再从文件中取出第二个整数存放在变量int t;中
向文件写入 i 的值,然后
i=t;
……
依此类推
最后当fread返回值为0时
再写一个数就OK

下面是代码
先预备一个二进制文件#include <stdlib.h>

#include <stdio.h>
int main( void )
{
  FILE *pf=NULL;
  int i = 100 , t ;
  pf = fopen("abc","wb");
  fwrite(&i,sizeof(int),1,pf);
  fclose(pf);
  return 0;
}

复制代码为简单起见,文件里只写了一个整数
下面开始读写
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
  FILE *pf=NULL;
  int i = 99 , t ;
//  pf = fopen("abc","wb");
//  fwrite(&i,sizeof(int),1,pf);
//  fclose(pf);
  pf = fopen("abc","rb+");
  while( fread(&t,sizeof(int),1,pf) ) //读一个数放在t中
  {
      fseek(pf,-(long)sizeof(int) ,SEEK_CUR);//退回原来的位置
      fwrite(&i,sizeof i,1,pf) ;              //写入i
      i = t ;                                //留着下次写入
  }
  fseek(pf,-(long)sizeof(int) ,SEEK_CUR);
  fwrite(&i,sizeof i,1,pf);
  fclose(pf);
  return 0;
}
复制代码结果竟是死循环

很想听听大家对这个BUG的高见
搜索更多相关主题的帖子: 二进制 include 记录 
2012-07-21 10:46
快速回复:求教高手,关于二进制文件读写问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018351 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved