gdx快去学习 2020-06-02 19:35 采纳率: 100%
浏览 829
已采纳

为什么这个输出的时候汉字会出现乱码,要怎么解决?

在做一个大作业,现在只写了打印输出的部分(为了能单独编译改了点)。就是最后输出的时候,汉字会乱码,除了汉字其他都是好的,能解释一下原因,并讲一下解决方法吗。谢谢大佬们!

#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)
  • 写回答

1条回答 默认 最新

  • EkuinoxPrime 2020-06-03 11:07
    关注

    cmd的字符集是ANSI的,重新保存为ANSI格式就行了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振