在我的大学里,我有一个编写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的英文字符。
答案 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;
}
像魅力一样工作