课设偶然找到了一个简单的解决方法
方法就是把文件的编码格式改为ANSI
然后函数这么写,存储下来的就不会乱码(部分代码如下)
struct Order {
char orderNumber[32]; // 订单号
char passengerName[50]; // 旅客姓名
char contactInfo[20]; // 联系方式
char IDNum[20]; // 证件号
char flightNum[10]; // 航班号
char source[20]; // 出发地
char destination[20]; // 目的地
char departureDate[20]; // 起降时间:日期
char departureTime[20]; // 起降时间:时间
char seatNumber[5]; // 座位号
char price[20]; // 价格
char paymentInfo[20]; // 支付信息
struct Order* next; // 下一个订单信息的指针
};
Order* parseOrdersFromFile(const char* filename) {
FILE* file = fopen(filename, "r");
if (file == NULL) {
printf("无法打开订单!\n");
return NULL;
}
Order* head = NULL;
Order* current = NULL;
char line[256];
while (fgets(line, sizeof(line), file)) {
line[strcspn(line, "\n")] = '\0';
Order* order = (Order*)malloc(sizeof(Order));
sscanf(line, "%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,\n]",
order->orderNumber,order->passengerName, order->contactInfo, order->IDNum, order->flightNum,
order->source, order->destination, order->departureDate, order->departureTime,
order->seatNumber, order->price, order->paymentInfo);
order->next = NULL;
if (head == NULL) {
head = order;
current = order;
} else {
current->next = order;
current = order;
}
}
fclose(file);
return head;
}