C Cyrillic控制台输入使用标准char数据类型而不是wchar_t

时间:2017-05-24 17:16:39

标签: c encoding cyrillic

在我的大学里,我有一个编写C项目的课程,该项目支持控制台上的西里尔文输入和文本以及写入文件。但它们只允许使用char数据类型和printf scanf函数。

在过去的两天里,我一直在研究如何做到这一点,并找到了解决方案,如果您将编码设置为UTF16并使用wchar_t,则只支持西里尔字符。但这让我使用wchar_t函数wprintf,wscanf等。不是一个真正的选择。

这是我现在拥有的代码,但它在控制台上打印出奇怪的符号。

int main(void) {

setlocale(LC_ALL, "bg-BG");

char str[80];

printf("Въведи текст: "); //Enter text:
scanf("%s", str);

printf("Ти въведе: %s", str); //You entered: 

getch();

return 0;

}

我有什么遗漏或误解吗?据我所知,C / C ++ ASCII表仅支持范围为0 - 127的英文字符。

1 个答案:

答案 0 :(得分:1)

幸运的是,运气好的我设法使用这两个:

system("chcp 1251"); setlocale(LC_ALL, "UTF8"); 所以这是最终的解决方案:

int main(void) {

    system("chcp 1251");
    setlocale(LC_ALL, "UTF8");

    char str[80];

    printf("Въведи текст: ");
    scanf("%s", str);

    printf("Ти въведе: %s", str);

    getch();

    return 0;
}

像魅力一样工作