需要一串C语言代码,实现从文本中读取出指定学号的学生信息并显示,文本文件存放格式是每一行对应一个学生信息,最后一行没有换行符
时间: 2024-01-01 10:22:45 浏览: 106
好的,以下是符合要求的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 50 // 假设学号和姓名的最大长度为50
typedef struct {
char id[MAX_LEN];
char name[MAX_LEN];
int age;
char gender[MAX_LEN];
} Student;
int main() {
FILE *fp;
char filename[] = "students.txt"; // 存放学生信息的文本文件名
char search_id[MAX_LEN]; // 需要查找的学号
Student stu; // 用于存放读取出的学生信息
printf("请输入需要查找的学号:");
scanf("%s", search_id);
fp = fopen(filename, "r");
if (fp == NULL) {
printf("无法打开文件 %s\n", filename);
exit(1);
}
while (fscanf(fp, "%s %s %d %s", stu.id, stu.name, &stu.age, stu.gender) == 4) {
// 如果读取出4个数据(即学号、姓名、年龄、性别),说明读取成功
if (strcmp(stu.id, search_id) == 0) {
// 如果读取出的学号与需要查找的学号相同,说明找到了,输出该学生信息
printf("学号:%s\n姓名:%s\n年龄:%d\n性别:%s\n", stu.id, stu.name, stu.age, stu.gender);
fclose(fp);
return 0;
}
}
// 如果程序执行到这里,说明循环结束还没有找到对应学号的学生信息
printf("未找到学号为 %s 的学生信息\n", search_id);
fclose(fp);
return 0;
}
```
注意事项:
1. 代码中的 `students.txt` 是一个示例文本文件名,实际使用时需要根据需要修改;
2. 假设文本文件中每个字段之间用空格隔开,且每行末尾没有多余空格;
3. 没有对输入的学号进行格式验证,可能会导致程序崩溃,实际应用中需要添加相应的验证代码。
阅读全文