c语言定义一个课程结构体(成员有课程,名字,上课时间以及总课时数),往文件写入三个课程变量后通过文件定位,读出第二门科目的信息
时间: 2024-03-05 19:49:17 浏览: 59
课程信息管理系统(C语言)(结构体数组)
5星 · 资源好评率100%
好的,这里是一个定义了课程结构体的 C 语言代码,并实现了往文件写入三个课程变量和通过文件定位读出第二门科目的信息:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FILENAME "courses.txt"
struct Course {
int id;
char name[20];
char time[20];
int hours;
};
int main() {
// 定义三个课程变量
struct Course course1 = {1, "数学", "周一 8:00-9:50", 2};
struct Course course2 = {2, "英语", "周三 10:00-11:50", 2};
struct Course course3 = {3, "计算机科学", "周五 14:00-15:50", 2};
// 将三个课程变量写入文件
FILE* fp = fopen(FILENAME, "wb");
if (fp == NULL) {
printf("打开文件失败\n");
return 1;
}
fwrite(&course1, sizeof(struct Course), 1, fp);
fwrite(&course2, sizeof(struct Course), 1, fp);
fwrite(&course3, sizeof(struct Course), 1, fp);
fclose(fp);
// 通过文件定位,读出第二门科目的信息
fp = fopen(FILENAME, "rb");
if (fp == NULL) {
printf("打开文件失败\n");
return 1;
}
fseek(fp, sizeof(struct Course), SEEK_SET); // 定位到第二个课程的位置
struct Course course;
fread(&course, sizeof(struct Course), 1, fp); // 读取第二个课程的信息
fclose(fp);
// 输出第二门科目的信息
printf("第二门科目:%s\n", course.name);
printf("上课时间:%s\n", course.time);
printf("总课时数:%d\n", course.hours);
return 0;
}
```
这里的代码同样定义了一个课程结构体 `Course`,其中包含了课程的 ID、名称、上课时间和总课时数。然后在 `main` 函数中,创建了三个课程变量,并将它们写入文件中。接着通过 `fopen` 函数打开文件,使用 `fseek` 函数定位到第二个课程的位置,再使用 `fread` 函数读取出该课程的信息,并将其存储在 `course` 变量中。最后输出第二门科目的名称、上课时间和总课时数。
注意,这里使用了二进制文件的读写方式,即使用 `fopen` 函数打开文件时,使用 `"wb"` 和 `"rb"` 的方式打开文件;使用 `fwrite` 函数将数据写入文件;使用 `fread` 函数从文件中读取数据。这种方式比较底层,但可以确保数据的完整性和正确性。同时,还需要注意结构体中字符串的定义方式,使用字符数组的方式定义字符串,并使用 `strcpy` 函数进行赋值。
阅读全文