大家好,我是一童,今天分享二进制文件的读取;先了解一下函数吧;
- 函数原型
fwrite(buffer,size,count,fp);
fread(buffer,size,count,fp);
buffer//地址
size//字节数
count//数据项
fp//所指文件 - 代码
<1>写文件
#include <stdio.h>
#include <stdlib.h>
#define N 20
#define size 3
struct Student
{
char name[N];
int num;
int age;
char add[N];
}stu[size];
void Save()
{
FILE*fp;
int i;
char filename[N];
printf("文件名:");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("无法打开!!");
exit(0);
}
for(i=0;i<size;i++)
if((fwrite(&stu[i],sizeof(struct Student),1,fp))!=1)
printf("文件打开失败!!");
fclose(fp);
}
void main()
{
int i;
printf("输入数据:\n");
for(i=0;i<size;i++)
scanf("%s%d%d%s",&stu[i].name,&stu[i].num ,&stu[i].age,&stu[i].add);
Save();
}
<2>读文件
#include <stdio.h>
#include <stdlib.h>
#define size 3
#define N 20
struct Student
{
char name[N];
int num;
int age;
char add[N];
}stu[size];
void main()
{
FILE*fp;
if((fp=fopen("mm.dat","rb"))==NULL)
{
printf("打不开此文件!");
exit(0);
}
for(int i=0;i<size;i++)
{
fread(&stu[i],sizeof(struct Student),1,fp);
printf("%-10s %4d %4d %-15s\n",stu[i].name,stu[i].num,stu[i].age,stu[i].add);
}
fclose(fp);
}
- 截图