功能需求
- 录入学生信息并将信息保存到磁盘文件
- 信息录入完毕后将信息读出打印
实现思路
- 创建StuInfo结构体保存学生信息(一次可以输入多条学生信息)
- 以写的方式打开文件,将结构体信息写入文件
- 关闭文件
- 以读的方式打开文件,将学生信息读到结构体并输出
- 关闭文件
代码实现
代码语言:javascript
复制//
// Created by 冲哥 on 2021/2/24.
// 关注公众号【C语言中文社区】,和更多C语言爱好者一块学习。
//
#include<stdio.h>
#include<process.h>
struct StuInfo {
char name[20];
char gender[2];
int age;
} info[100];
void save_info(char *filename, int n) {
FILE *fp;
int i;
if ((fp = fopen(filename, "wb")) == NULL) {
printf("open file error!n");
exit(0);
}
for (int i = 0; i < n; i ) {
if (fwrite(&info[i], sizeof(struct StuInfo), 1, fp) != 1) {
printf("write error!n");
}
}
fclose(fp);
}
void show_info(char *filename, int n) {
FILE *fp;
if ((fp = fopen(filename, "rb")) == NULL) {
printf("open file error!n");
exit(0);
}
for (int i = 0; i < n; i ) {
fread(&info[i], sizeof(struct StuInfo), 1, fp);
printf(" ssd", info[i].name, info[i].gender, info[i].age);
}
fclose(fp);
}
int main(){
int i, n;
char filename[50];
printf("how many info will be write?n");
scanf("%d", &n);
printf("please input the filename:n");
scanf("%s", filename);
printf("please input the name,gender,age:n");
for (int j = 0; j < n; j ) {
printf("NO%dn", j 1);
scanf("%s,%s,%d", info[j].name, info[j].gender, info[j].age);
save_info(filename, n);
}
show_info(filename, n);
return 0;
}
运行结果