在做一个大作业,现在只写了打印输出的部分(为了能单独编译改了点)。就是最后输出的时候,汉字会乱码,除了汉字其他都是好的,能解释一下原因,并讲一下解决方法吗。谢谢大佬们!
#include<stdio.h>
#include<stdlib.h>
struct airline
{
char number[7]; //航班号
char start[7]; //起始地
char end[7]; //目的地
char day[7]; //飞行日(一周内有该航班的天)
char time1[6]; //起飞时间
char time2[6]; //落地时间
char time3[6]; //飞行时间
int price; //机票价格
int total; //最多乘客数
int remain; //剩余票数
}air[50];
void listall(struct airline air[]);
int main()
{
int t;
while (1)
{
system("cls");
printf("******************************\n");
printf("* 查看航班信息: *\n");
printf("******************************\n");
printf("* 1. 显示所有航班信息 *\n");
printf("* 2. 我的订单信息 *\n");
printf("* 0. 返回主页面 *\n");
printf("******************************\n\n");
printf("请选择您想要的功能:");
scanf("%d",&t);
switch (t)
{
case 1: listall(air);
case 2: break;
case 0: break;
default: printf("输入错误,请重新输入\n"); //输入调整
}
}
}
void listall(struct airline air[])
{
int i,N;
char firstline[500];
FILE *list;
if ( (list = fopen("航班信息.txt","r")) == NULL)
{
printf("打开文件失败!\n");
exit(0);
}
/*读取文件中的信息*/
fgets(firstline,500,list); //读取第一行标题
for( i=0; !feof(list); i++) //读飞机航班信息到air[]
{
fscanf(list,"%s %s %s %s %s %s %s",air[i].number,air[i].start,air[i].end,air[i].day,
air[i].time1,air[i].time2,air[i].time3);
fscanf(list,"%d %d %d",&air[i].price,&air[i].total,&air[i].remain);
}
N=i;
/*打印至屏幕*/
printf("航班号 起始地 目的地 飞行日 起飞时间 落地时间 飞行时间 机票价格 最多乘客数 剩余票数\n");
for (i=0; i<N; i++)
printf("%-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10d %-10d %-10d\n",air[i].number,air[i].start,air[i].end,air[i].day,
air[i].time1,air[i].time2,air[i].time3,air[i].price,air[i].total,air[i].remain);
system("pause");
fclose(list);
}
```txt文件内容是这样的![图片说明](https://img-ask.csdn.net/upload/202006/02/1591097640_198797.png)
按这段代码输出的是这样的![图片说明](https://img-ask.csdn.net/upload/202006/02/1591097707_8631.jpg)