int main() {
char faculty[20];
ss=setlocale(LC_ALL, "");
f = fopen("input.txt", "r");
printf("Введите название факультета \n");
scanf("%s", faculty);
fgets(faculty, 19, f);
.......................
我无法从控制台读取西里尔文字。 我尝试更改字体、setlocale 参数,但没有任何帮助。 scanf 函数返回(看起来是这样)utf-16。 输出到控制台就可以了。 控制台中的默认代码页 - 866,我不知道如何更改它;
输入的代码页可能是错误的。我想您正在 Windows 中运行代码,因此您可以使用 SetConsoleCP 更改它。尝试使用代码页 1251(ANSI 西里尔文;西里尔文 (Windows))。它应该或多或少类似于以下代码:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <Windows.h>
int main()
{
wchar_t faculty[1024] = L"";
setlocale(LC_ALL, "Russian");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
wprintf(L"Введите название факультета \n");
wscanf(L"%s", faculty);
wprintf(L"%s\n", faculty);
}