#include<stdio.h>
main()
{
FILE *fp,*f;
int num[5],n;
if((fp=fopen("sz.bin","wb"))==NULL)
{
printf("打开“sz.bin”文件失败");
return 0;
}
printf("请随机输入五个数:");
for(int i=0;i<5;i++)
{
scanf("%d",&num[i]);
}
for(int i=0;i<5;i++)
{
fwrite(&num[i],sizeof(int),1,fp);
}
fclose(fp);
if((fp=fopen("sz.bin","rb"))==NULL)
{
printf("打开“sz.bin”文件失败!!!");
return 0;
}
if((f=fopen("sz.txt","w"))==NULL)
{
printf("打开“sz.txt”文件失败");
fclose(fp);
return 0;
}
while(!feof(fp))
{
fread(&n,sizeof(int),1,fp);
fprintf(f,"%d ",n);
}
fclose(fp);
fclose(f);
}
二进制文件的存储,通常先存储写入数据的数量,然后写入数据。读取时就先读入这个数量,然后依次循环读取相应的数据
int count = 5;
fwrite(&count,sizeof(int),1,fp);//记录数据的数量
for(int i=0;i<5;i++)
{
fwrite(&num[i],sizeof(int),1,fp);
}
fclose(fp);
if((fp=fopen("sz.bin","rb"))==NULL)
{
printf("打开“sz.bin”文件失败!!!");
return 0;
}
if((f=fopen("sz.txt","w"))==NULL)
{
printf("打开“sz.txt”文件失败");
fclose(fp);
return 0;
}
int read_count = fread(&count,sizeof(int),1,fp);
if(read_count > 0)
{
for(int i=0; i<count; i++)
{
read_count = fread(&n,sizeof(int),1,fp);
if(read_count>0) //判读是否读取成功
fprintf(f,"%d ",n);
}
}