文件操作
本帖最后由 18878977809 于 2021-2-27 11:19 编辑#include<stdio.h>
#define SIZE 4
struct student
{
char name;
int num;
int age;
char addr;
}stu;
void load();//将文件读取出来
void save()//将从键盘输入的数据以二进制存储到磁盘文件中
{
FILE *fp;
int i;
if(!(fp=fopen("student_list","wb")))
{
printf("Cannot open the file!\n");
return;
}
for(i=0;i<SIZE;i++)
{
if(fwrite(&stu,sizeof(struct student),1,fp)!=1)
{
printf("file write error!\n");
fclose(fp);
}
}
}
void main()
{
int i;
printf("please input the student's name,num,age and address:\n");
for(i=0;i<SIZE;i++)
{
scanf("%s %d %d %s",stu.name,&stu.num,&stu.age,stu.addr);
}
save();
load();
}
void load()
{
FILE *fp;
int i;
if(!(fp=fopen("student_list","rb+")))
{
printf("打开错误!\n");
return;
}
for(i=0;i<SIZE;i++)
{
if(fread(&stu,sizeof(struct student),1,fp)!=1)//fread(&stu,sizeof(struct student),1,fp)
{
printf("file read error!\n");
fclose(fp);
}
else
{
printf("%s %d %d %s\n",stu.name,stu.num,stu.age,stu.addr);
}
}
}
//试试在main中去掉下面这段代码,就正常了(前提student_list文件已建立)
#if(0)
printf("please input the student's name,num,age and address:\n");
for(i=0;i<SIZE;i++)
{
scanf("%s %d %d %s",stu.name,&stu.num,&stu.age,stu.addr);
}
save();
#endif
为什么会这样子?
对应题目是小甲鱼老师09年老版的C语言62讲的课后习题 找出问题了,在save函数中没有断开文件指针fp与文件的关联 !,好一个自问自答
页:
[1]