我正在尝试使 C 控制台应用程序在 ascanf
或 in 中收集(通过键盘)特殊的西班牙字符,如重音、“ñ”等gets
。
printf
由于locale.h
. _ 我举一个例子:
#include <stdio.h>
// Añade paquete de idiomas
#include <locale.h>
int main(void)
{
// Declaración de variables
char cadena[254];
// Establecer el idioma a español
setlocale(LC_ALL, "spanish");
// Mostrar correctamente los caracteres especiales del español
printf("¡Éxito!. Se muestran los caracteres especiales del español.");
printf("Introduce un string con caracteres especiales: ");
gets(cadena);
printf("El string con caracteres especiales que has introducido es: %s", cadena);
return 0;
}
但我仍然无法使用上述功能正确拾取它们。
有谁知道该怎么做?
谢谢
编辑1:
做测试我观察到:
setlocale(LC_ALL, "spanish");
它正确显示了西班牙语字符,但它没有从键盘上提取它们。setlocale(LC_ALL, "es_ES");
它从键盘正确收集西班牙语字符,但无法正确显示它们。
我找到了解决问题的方法。显然这个问题只出现在 Windows 及其命令控制台中。
它包括使用命令
SetConsoleCP()
和更改 Windows 控制台的输入和输出的编码SetConsoleOutputCP()
(为此,还需要包含 headerwindows.h
)。这样问题就解决了。我希望它可以帮助其他和我有同样问题的人。一切顺利。