链表存储结构的多个航班信息怎么读取和写入文件,c语言代码实现
时间: 2024-10-08 10:05:06 浏览: 26
航班查询系统C语言源程序文件.doc
在C语言中,链表可以用于存储航班信息,包括航班编号、出发地、目的地等数据。为了将链表的数据保存到文件并从文件中读取,你可以使用以下几个步骤:
1. 定义航班信息节点(flight_info_node)结构体,并包含航班数据和指向下一个节点的指针。
```c
typedef struct FlightInfo {
char flight_number[10];
char origin[50];
char destination[50];
struct FlightInfo* next;
} FlightInfoNode;
```
2. 创建链表函数(例如添加新航班),然后将链表头部指针作为输入参数传递给写入文件的函数。
```c
void addFlightToList(FlightInfoNode** head, FlightInfo* newFlight) {
// 添加航班到链表...
}
void writeFlightsToFile(const char* fileName, FlightInfoNode* head) {
FILE* file = fopen(fileName, "w");
if (file == NULL) {
perror("Failed to open file for writing");
return;
}
FlightInfoNode* current = head;
while (current != NULL) {
fprintf(file, "%s -> %s -> %s\n", current->flight_number, current->origin, current->destination);
current = current->next;
}
fclose(file);
}
```
3. 从文件读取航班信息创建链表,先关闭已存在的链表,然后打开文件。
```c
void readFlightsFromFile(char* fileName, FlightInfoNode** head) {
FILE* file = fopen(fileName, "r");
if (file == NULL) {
perror("Failed to open file for reading");
return;
}
*head = NULL;
int line_num = 0;
char flightNumber[10], origin[50], destination[50];
while (fgets(line_num, sizeof(line_num), file)) {
if (sscanf(line_num, "%9s -> %49s -> %49s", flightNumber, origin, destination) == 3) {
FlightInfoNode* newNode = malloc(sizeof(FlightInfoNode));
newNode->flight_number = flightNumber;
newNode->origin = origin;
newNode->destination = destination;
newNode->next = *head;
*head = newNode;
} else {
break; // 文件结束标志
}
}
fclose(file);
}
// 使用示例
int main() {
FlightInfoNode* head = NULL;
addFlightToList(&head, ...); // 添加一些航班信息
// 写入文件
writeFlightsToFile("flights.txt", head);
// 从文件读取
readFlightsFromFile("flights.txt", &head);
return 0;
}
```
阅读全文