C语言定义一个学生信息的结构体,实现一个函数为学生信息导入文件,实现一个函数从文件读取学生信息并输出控制台,
时间: 2024-12-08 15:22:27 浏览: 13
在C语言中,首先我们需要定义一个名为`Student`的结构体来存储学生的信息,例如姓名、学号和成绩。这里是一个简单的例子:
```c
typedef struct {
char name[50]; // 学生姓名
int id; // 学生学号
float score; // 学生成绩
} Student;
```
接下来,我们可以编写两个函数:`import_students_from_file()`用于从文件导入学生信息,以及`read_and_print_students()`用于读取并打印学生信息到控制台。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义文件操作函数原型
void import_students_from_file(const char* filename, Student** students);
void read_and_print_students(Student* students, int num_students);
// 文件导入函数
void import_students_from_file(const char* filename, Student** students) {
FILE* file = fopen(filename, "r");
if (file == NULL) {
printf("Error opening file %s\n", filename);
return;
}
// 读取行数
fseek(file, 0, SEEK_END);
int size = ftell(file);
fseek(file, 0, SEEK_SET);
*students = (Student*)malloc(size / sizeof(Student));
if (*students == NULL) {
perror("Memory allocation failed");
fclose(file);
return;
}
int i = 0;
while (fgets((*students)[i].name, sizeof(*students[i].name), file) != NULL) {
sscanf(fgets((*students)[i].name, sizeof(*students[i].name), file), "%s %d %.2f", (*students)[i].name, &(*students)[i].id, &(*students)[i].score);
++i;
}
fclose(file);
}
// 读取并打印学生信息
void read_and_print_students(Student* students, int num_students) {
for (int i = 0; i < num_students; ++i) {
printf("Name: %s, ID: %d, Score: %.2f\n", students[i].name, students[i].id, students[i].score);
}
}
```
在这个示例中,假设学生信息文件的每一行格式为"姓名 学号 成绩",如:"张三 1001 89.50"。`import_students_from_file()`会打开文件,逐行读取数据并存储在`Student`数组中,然后传给`read_and_print_students()`函数来打印。
阅读全文