From b96ea9acfe6ad6720979df84fca35f6e3c9900cc Mon Sep 17 00:00:00 2001 From: hairrrrr <781728963@qq.com> Date: Wed, 12 Feb 2020 14:50:41 +0800 Subject: [PATCH] 2-12 --- .../fwrite/student information/read.c | 45 +++++++++++++++++++ .../student information/{main.c => write.c} | 2 +- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 C Crash Course/21 Input&Output/prelesson/binary file/fwrite/student information/read.c rename C Crash Course/21 Input&Output/prelesson/binary file/fwrite/student information/{main.c => write.c} (92%) diff --git a/C Crash Course/21 Input&Output/prelesson/binary file/fwrite/student information/read.c b/C Crash Course/21 Input&Output/prelesson/binary file/fwrite/student information/read.c new file mode 100644 index 0000000..c4d6beb --- /dev/null +++ b/C Crash Course/21 Input&Output/prelesson/binary file/fwrite/student information/read.c @@ -0,0 +1,45 @@ +#include +#include"student.h" + +void read(FILE* fp, int index); + +int main(void) { + + FILE* fp = fopen("student.data", "r"); + if (fp) { + fseek(fp, 0L, SEEK_END);//将文件读/写开始的位置定到结尾 + long size = ftell(fp);//获得从文件开始到文件结尾的字节数 + int index = 0; + int number = size / sizeof(Student); + printf("有 %d 个学生数据,你要看第几个\n", number); + scanf("%d", &index); + read(fp, index - 1); + } + else + printf("文件打开失败!\n"); +} + +void read(FILE* fp, int index) { + + fseek(fp, index * sizeof(Student), SEEK_SET); + + Student stu; + + if (fread(&stu, sizeof(Student), 1, fp) == 1) { + printf("第 %d 个学生:\n", index + 1); + printf("\t姓名:%s\n", stu.name); + printf("\t性别:"); + switch (stu.gender) { + case 0: + printf("男\n"); + break; + case 1: + printf("女\n"); + break; + default: + printf("其他\n"); + break; + } + printf("\t年龄:%d\n", stu.age); + } +} \ No newline at end of file diff --git a/C Crash Course/21 Input&Output/prelesson/binary file/fwrite/student information/main.c b/C Crash Course/21 Input&Output/prelesson/binary file/fwrite/student information/write.c similarity index 92% rename from C Crash Course/21 Input&Output/prelesson/binary file/fwrite/student information/main.c rename to C Crash Course/21 Input&Output/prelesson/binary file/fwrite/student information/write.c index ef8b22c..fb04559 100644 --- a/C Crash Course/21 Input&Output/prelesson/binary file/fwrite/student information/main.c +++ b/C Crash Course/21 Input&Output/prelesson/binary file/fwrite/student information/write.c @@ -52,7 +52,7 @@ void getList(Student* Stu, int num) { int save(Student* Stu, int num) { int ret = -1; - FILE* fp = fopen("student.data", "wx"); + FILE* fp = fopen("student.data", "wx");//如果要向student.data反复写入数据,将 wx 改为 x if (fp) { ret = fwrite(Stu, sizeof(Student), num, fp); //记录 fwrite 的返回值:写入文件的学生个数