用c语言写一个把单一文件中多行不同信息(比如学号,学生姓名,性别,年龄。以空格分隔)读取到同一个结构体的不同数组中
时间: 2024-05-11 09:18:27 浏览: 75
假设我们有如下的数据文件 `data.txt`:
```
001 Tom M 20
002 Jerry F 19
003 Mike M 21
```
我们可以使用 C 语言的标准库函数 `fscanf()` 来读取每一行的数据,并将其存储到结构体数组中。以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_STUDENTS 100
struct student {
char id[4];
char name[20];
char gender[2];
int age;
};
int main() {
FILE *fp;
struct student students[MAX_STUDENTS];
int i = 0;
fp = fopen("data.txt", "r");
if (fp == NULL) {
printf("Failed to open file\n");
exit(1);
}
while (fscanf(fp, "%s %s %s %d", students[i].id, students[i].name, students[i].gender, &students[i].age) != EOF) {
i++;
}
fclose(fp);
// 打印读取到的数据
for (int j = 0; j < i; j++) {
printf("%s %s %s %d\n", students[j].id, students[j].name, students[j].gender, students[j].age);
}
return 0;
}
```
在上面的代码中,我们首先定义了一个 `struct student` 结构体,用于存储每个学生的信息。然后,我们打开文件,使用 `fscanf()` 函数逐行读取数据,并将其存储到结构体数组中。最后,我们遍历结构体数组,打印读取到的数据。
需要注意的是,上面的代码假设每个学生的学号都是 3 位数,姓名不超过 20 个字符,性别只有一个字母,年龄是整数。如果实际情况与此不符,需要根据需要进行修改。
阅读全文