VS CODE 在不同编码下中文输入和输出的相关问题求解

VS CODE 在不同编码下中文输入和输出的相关问题求解

问题描述:

在chcp 936状态下printf输出中文乱码,scanf输入中文再printf输出时正常
在chcp 65001状态下printf输出中文正常,scanf输入中文再printf输出是显示为空

编译器为 visual studio code version1.63.0

问题相关代码

#include "stdio.h"
#define N 1

struct stu
{
    char id[6];
    char name[20];
    int m1,m2,m3;
    float avg;
};

int main()
{
    struct stu student[N];
    int i;
    for ( i = 0; i < N; i++)
    {
        printf("请输入第%d个同学的记录:",i+1);
        scanf("%s%s%d%d%d",student[i].id,&student[i].name,&student[i].m1,&student[i].m2,&student[i].m3);
    }
    printf("他们的成绩单为:\n");
    for ( i = 0; i < N; i++)
    {
        printf("%s\t%s\t%d,%d,%d\n",student[i].id,student[i].name,student[i].m1,student[i].m2,student[i].m3);
    }
    
}
运行结果

活动代码页: 936
PS E:\VSCODE\CODE.vscode> cd "e:\VSCODE\CODE.vscode" ; if ($?) { gcc test.c -o test } ; if ($?) { .\test }
璇疯緭鍏ョ1涓悓瀛︾殑璁板綍:01 小明 99 99 99
浠栦滑鐨勬垚缁╁崟涓猴細
01 小明 99,99,99
PS E:\VSCODE\CODE.vscode>
Active code page: 65001
PS E:\VSCODE\CODE.vscode> cd "e:\VSCODE\CODE.vscode" ; if ($?) { gcc test.c -o test } ; if ($?) { .\test }
请输入第1个同学的记录:01 小明 99 99 99
他们的成绩单为:
01 99,99,99
PS E:\VSCODE\CODE.vscode>

请问有解决方法吗?

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。