用c语言编写一个头文件stu.h,另编写一个程序,用dtu.h中的结构体定义变量stud,读取在上一题建立的磁盘文件,第3条记录“胡大勇”的成绩,修改为70,85后写回磁盘文件中。
时间: 2024-04-05 19:32:19 浏览: 211
如何写C语言的头文件
好的,这里是 `stu.h` 的代码示例:
```c
#ifndef STU_H_
#define STU_H_
typedef struct {
char id[12];
char name[20];
char gender[6];
int age;
int birthday[3];
int score1;
int score2;
} Student;
#endif
```
这是一个简单的头文件,定义了与上一题中相同的 `Student` 结构体。
接下来是读取并修改学生数据的代码示例:
```c
#include <stdio.h>
#include "stu.h"
int main() {
// 读取学生数据文件
FILE *fp = fopen("students.txt", "r");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
Student students[5];
for (int i = 0; i < 5; i++) {
Student s;
fscanf(fp, "%[^,],%[^,],%[^,],%d,%d-%d-%d,%d,%d\n", s.id, s.name, s.gender,
&s.age, &s.birthday[0], &s.birthday[1], &s.birthday[2], &s.score1, &s.score2);
students[i] = s;
}
fclose(fp);
// 修改胡大勇的成绩
for (int i = 0; i < 5; i++) {
if (strcmp(students[i].name, "胡大勇") == 0) {
students[i].score1 = 70;
students[i].score2 = 85;
break;
}
}
// 将修改后的学生数据写回文件
fp = fopen("students.txt", "w");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
for (int i = 0; i < 5; i++) {
Student s = students[i];
fprintf(fp, "%s,%s,%s,%d,%d-%d-%d,%d,%d\n", s.id, s.name, s.gender, s.age,
s.birthday[0], s.birthday[1], s.birthday[2], s.score1, s.score2);
}
fclose(fp);
printf("Student data saved to file.\n");
return 0;
}
```
这段代码首先读取学生数据文件,然后查找到胡大勇的记录,将其成绩修改为70和85。最后将修改后的学生数据写回到文件中。注意,这里的文件格式与上一题中相同,因此可以直接读取和写回上一题生成的文件。
阅读全文