在VS中编写以下代码,定义一个学生(Student)结构体类型,学号num,姓名name,性别sex,年龄age,采用fputs和fgets函数将信息写入到student.dat文件中,然后读取文件在屏幕中显示出来。
时间: 2024-03-03 16:51:22 浏览: 63
建立一个名为Student的类,该类有以下几个私有成员变量:学生姓名、学号、性别、年龄。还有以下两个成员函数:一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。编写一个主函数。声明一个学学生对象。然后调用成员函数在屏幕输出学生信息。
4星 · 用户满意度95%
好的,以下是代码实现:
```c
#include <stdio.h>
// 定义学生结构体类型
typedef struct {
int num;
char name[20];
char sex[5];
int age;
} Student;
int main() {
Student stu;
FILE *fp;
// 打开文件,写入学生信息
fp = fopen("student.dat", "w");
if (fp == NULL) {
printf("文件打开失败!\n");
return 0;
}
fputs("学号 姓名 性别 年龄\n", fp);
printf("请输入学生信息:\n");
printf("学号:");
scanf("%d", &stu.num);
printf("姓名:");
scanf("%s", stu.name);
printf("性别:");
scanf("%s", stu.sex);
printf("年龄:");
scanf("%d", &stu.age);
fprintf(fp, "%d %s %s %d\n", stu.num, stu.name, stu.sex, stu.age);
fclose(fp);
// 打开文件,读取学生信息
fp = fopen("student.dat", "r");
if (fp == NULL) {
printf("文件打开失败!\n");
return 0;
}
printf("\n学生信息:\n");
while (fgets(stu.name, sizeof(stu), fp) != NULL) {
printf("%s", stu.name);
}
fclose(fp);
return 0;
}
```
代码解释:
1. 首先定义了一个学生结构体类型,包括学号、姓名、性别和年龄。
2. 然后在 `main` 函数中,先定义了一个 `Student` 类型的变量 `stu` 和一个文件指针 `fp`。
3. 接着打开文件 `student.dat`,以写入的方式将学生信息写入文件中,这里用到了 `fputs` 函数和 `fprintf` 函数。
4. 然后通过 `scanf` 函数从键盘上输入学生信息,并将其写入到文件中。
5. 再次打开文件 `student.dat`,以读取的方式将文件中的学生信息读取出来,这里用到了 `fgets` 函数。
6. 最后将学生信息输出到屏幕上。
注意事项:
1. 在使用 `fgets` 函数读取文件时,要注意每一行字符串的长度不能超过 `sizeof(stu)`。
2. 在读取文件时,要注意文件指针的位置,如果没有将文件指针指向文件开头,可能会读取不到数据。
阅读全文