头文件stdio.h中定义了两个用于文件块数据读写函数fread和fwrite
fread:读取文件中的数据
函数原型:size_t fread ( void *buffer, size_tsize, size_t count, FILE *stream) ;
第一个参数:数据变量的地址
第二个参数:数据类型的大小
第三个参数:数据块的个数
第四个参数:文件指针
fwrite:将数据写入文件中
函数原型:size_t fread ( void *buffer, size_tsize, size_t count, FILE *stream) ;
第一个参数:数据块变量的地址
第二个参数:数据类型的大小
第三个参数:数据块的个数
第四个参数:文件指针
实例1:在D:\\1.txt中写入一个学生的成绩
#include <stdio.h>
#include <stdlib.h>
struct Student
{
char Name[10];//姓名
int Age;//年龄
int No;//学号
float Chinese;//语文
float Math;//数学
float Einglish;//英语
float Total;//总分
float Ave;//平均分
};
void main()
{
FILE *fp;//文件结构指针
fp = fopen("D:\\1.txt","w");
if(NULL == fp)
{
printf("文件打开失败!\n");
}
else
{
printf("文件打开成功!\n");
struct Student st = {"小明",20,1001,85,87,88};
//计算总分
st.Total = st.Chinese + st.Math + st.Einglish;
//计算平均分
st.Ave = st.Total / 3;
fwrite(&st,sizeof(struct Student),1,fp);
fclose(fp);//关闭文件
}
system("pause");
}
执行结果(因为有些数据解析不出,所以出现下面的情况)
实例2:读取D:\\1.txt中的学生信息
#include <stdio.h>
#include <stdlib.h>
struct Student
{
char Name[10];//姓名
int Age;//年龄
int No;//学号
float Chinese;//语文
float Math;//数学
float Einglish;//英语
float Total;//总分
float Ave;//平均分
};
void main()
{
FILE *fp;//文件结构指针
fp = fopen("D:\\1.txt","r");
if(NULL == fp)
{
printf("文件打开失败!\n");
}
else
{
printf("文件打开成功!\n");
struct Student st;
fread(&st,sizeof(struct Student),1,fp);
/printf("%s %d %d %g %g %g %g %g\n",st.Name,st.Age,st.No,st.Chinese,st.Math,st.Einglish,st.Total,st.Ave);
fclose(fp);//关闭文件
}
system("pause");
}
执行结果: