程序输出中文乱码怎么办


#include 
#include 
struct cp {
    char name[2000];
    float price;
    int floor;
    char shitang;
};
int main()
{
    int i = 0, j = 0;
    float money;
    scanf("%f", &money);
    struct cp caipu[30] = { {"西红柿炒鸡蛋",3.5f,1,1},
    {"炒茄子",2.5f,2,1},
    {"蛋炒饭",6,1,2},
    {"鸡腿",6,1,1},
    {"鸡架",7,1,1},
    {"土豆丝",2,1,1},
    {"茄子",2.5f,1,1}
    };
    for (i = 0; i <= 29; i++)
        for (j = 0; j <= 29; j++)
        {
            if (caipu[i].price + caipu[j].price == money)
                printf("%c%c", caipu[i].name, caipu[j].name);
        }

    return 0;
}

为什么输出的是中文乱码呢?


#include <stdio.h>
#include <locale.h>
struct cp {
    char  name[100];
    float price;
    int   floor;
    char  shitang;
};
int main()
{
    int i = 0, j = 0;
    float money;

    setlocale(LC_ALL,"chs");
    scanf("%f", &money);
    struct cp caipu[7] = {
        {"西红柿炒鸡蛋",3.5f,1,1},
        {"炒茄子"      ,2.5f,2,1},
        {"蛋炒饭"      ,6.0f,1,2},
        {"鸡腿"        ,6.0f,1,1},
        {"鸡架"        ,7.0f,1,1},
        {"土豆丝"      ,2.0f,1,1},
        {"茄子"        ,2.5f,1,1},
    };
    for (i = 0; i < 7; i++)
    {
        for (j = 0; j < 7; j++)
        {
            if (caipu[i].price + caipu[j].price == money)
                printf("%s %s\n", caipu[i].name, caipu[j].name);
        }
    }
    return 0;
}


看一下能否调格式,utf8。