又到了做题的时候,搞了好久搞了出来。出了个bug,在保存函数忘记了关闭文件,导致读取函数时一直打开失败- -!
我不会怎么沟通讲题,所以我慢慢来,努力来让自己沟通能力提升!
贴代码!
#include <stdio.h>
#include <stdlib.h>
#define LEN 4 //在这里定义数组长度方便以后的修改,要养成这个好习惯;
struct stutype
{
char name[10], address[30]; //姓名 地址 学号 年龄;
int num, age;
}stu[LEN], stud[LEN]; //一个用于写,一个用于读;
void save();
void load();
void main (){
int i;
printf("请输入学生的 姓名、学号、年龄 和 地址:\n\n");
//写入学生信息;
for(i=0; i<LEN; i++){
printf("请输入第 %d 个学生的信息:\n", i+1);
scanf_s("%s %d %d %s",
stu[i].name, 10, &stu[i].num, &stu[i].age, stu[i].address, 30);
}
save(); //保存;
load(); //读取;
}
void save(){
int i;
FILE *fp;
fopen_s(&fp, "stulist", "wb");
if (!fp){
printf("打开文件错误1!\n\n");
return;
}
for (i=0; i<LEN; i++){
if (fwrite (&stu[i], sizeof(struct stutype), 1, fp) !=1){
printf("写入文件错误!\n");
fclose(fp);
}
}
fclose(fp); //很重要的一件事,打开完一个文件一定要记得关闭。
}
void load(){
int i;
FILE *fp;
fopen_s(&fp, "stulist", "rb");
if (!fp){
printf("打开文件错误2!\n");
return;
}
for (i=0; i<LEN; i++){
fread(&stud[i], sizeof(struct stutype), 1, fp);
printf("第 %d 个学生的信息:\n\n", i+1);
printf("姓名:%s\n学号:%d\n年龄:%d\n地址:%s\n\n",
stud[i].name, stud[i].num, stud[i].age, stud[i].address);
}
fclose(fp);
}