从文件course.txt 读取课程信息,放入线性表L中,直接在线性表表尾插入,返回值为读取的课程信息数,用c语言实现
时间: 2024-10-07 20:01:59 浏览: 29
12.zip_清除线性表_清除线性表L_顺序表
在C语言中,你可以通过以下几个步骤实现这个功能:
首先,你需要包含一些必要的头文件,并定义结构体来表示课程信息,例如:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义课程信息结构
typedef struct {
char course[50]; // 课程名
} Course;
Course* create_course(char *name); // 创建新的课程
void insert_course(Course** L, Course* new_course); // 插入课程到表尾
int read_courses_from_file(const char* filename, Course** L); // 从文件读取并插入课程
```
接下来,实现创建新课程的函数:
```c
Course* create_course(char *name) {
Course* new_course = (Course*)malloc(sizeof(Course));
strcpy(new_course->course, name);
return new_course;
}
```
然后是将课程插入表尾的函数:
```c
void insert_course(Course** L, Course* new_course) {
if (*L == NULL) {
*L = new_course;
} else {
Course* current = *L;
while (current->next != NULL) {
current = current->next;
}
current->next = new_course;
}
}
```
主函数中处理文件操作:
```c
int read_courses_from_file(const char* filename, Course** L) {
FILE* file = fopen(filename, "r");
if (file == NULL) {
printf("Error opening file.\n");
return 0; // 文件打开失败
}
int course_count = 0;
char line[100];
while (fgets(line, sizeof(line), file)) {
Course* new_course = create_course(line);
insert_course(L, new_course);
course_count++;
}
fclose(file);
return course_count;
}
```
最后,在main函数中调用`read_courses_from_file`函数并将结果输出:
```c
int main() {
Course* courses = NULL;
int course_num = read_courses_from_file("course.txt", &courses);
printf("Read %d courses into the list.\n", course_num);
// ... 其他处理代码 ...
free(courses); // 别忘了释放内存
return 0;
}
```
阅读全文