求教高手,关于二进制文件读写问题
问题:把一个整数插入到一个记录了若干整数的二进制文件的前部想法:
假设被插入的整数记录在变量 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的高见