C语言中控制台的输出不正确[重复]

9njqaruj  于 2023-03-01  发布在  其他
关注(0)|答案(2)|浏览(132)
    • 此问题在此处已有答案**:

C Cyrillic console input with standard char data type instead of wchar_t(1个答案)
14天前关闭。
程序的目的是得到一个符号,然后立即在屏幕上显示出来,但问题是它输出了一个不同的字符,或者什么都没有,我发现输出是用Windows-1251编码,输入是用CP866,我怎么解决这个问题呢?如何使输出和输入都用Windows-1251编码。
后脚本:输入西里尔字符时出现问题。

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

int main(void)
{
    setlocale(LC_ALL, "");

    printf("Уведіть символ.\n");

    char ch = getchar();

    printf("\n");

    printf("%c", ch);

    getchar();
    getchar();

    return 0;
}

我尝试使用wchar_t(分别为程序wprintf()getwchar()),但情况没有改变。

k10s72fa

k10s72fa1#

也许这会有所帮助?https://stackoverflow.com/a/44167461/8893124他们建议设置:

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

nhhxz33t2#

我找到了另一种方法来解决这个问题。也许有人会发现它有用。但是,它只适用于Windows。为此,您需要包括头文件<windows.h>,并在输入以下内容之前写入:

SetConsoleCP(1251);
SetConsoleOutputCP(1251);

然后输入/输出将采用Windows-1251编码。

相关问题