[Windows] VSCode terminal not working with letter "ñ,á,é,í,ó,ú" from spanish alphabets #229324
Closed as not planned
Closed as not planned
Description
opened on Sep 23, 2024
Does this issue occur when all extensions are disabled? Yes
- VS Code Version: 1.93.1
- OS Version: Windows 11 Enterprise 23H2
Hello, I am learning program in C, but using the VSCode integrated terminal have some limitation for the spanish characters.
Here is the program:
#include <stdio.h>
#include <stdlib.h>
// Librerías para trabajar con vocales acentuadas y caracteres especiales
#include <wchar.h>
#include <wctype.h> // Para funciones como towlower() y iswalpha()
#include <locale.h>
// ============ //
// Funciones //
// ============ //
// Función para convertir a Minúscula
void aMinúscula(wchar_t* cadena) {
for (size_t i = 0; cadena[i] != L'\0'; i++) {
cadena[i] = towlower(cadena[i]);
}
}
// Función para validar que no sea alfanúmerico.
int esLetras(const wchar_t* cadena) {
for (size_t i = 0; cadena[i] != L'\0'; i++) {
// isalnum: Verifica si el carácter es alfanúmerico
if (!iswalpha(cadena[i])) {
return 1;
}
}
return 0;
}
// Validar si es Palíndromo la palabra
int esPalindromo(const wchar_t* palabra) {
int inicio = 0;
size_t fin = wcslen(palabra) - 1;
while (inicio < fin) {
if (palabra[inicio] != palabra[fin]) {
// No es palíndromo
return 0;
}
inicio++;
fin--;
}
// Es palíndromo
return 1;
}
// ==================== //
// Programa Principal //
// ==================== //
int main(int argc, char const* argv[]) {
setlocale(LC_ALL, "");
size_t buffer = 128; // Tamaño del buffer.
wchar_t palabra[buffer];
wprintf(L"Introduzca una palabra: ");
if (fgetws(palabra, buffer, stdin) != NULL) {
// Eliminamos el salto de linea que fgets añade
palabra[wcscspn(palabra, L"\n")] = L'\0';
// Convertimos la palabra a minúsculas para evitar problemas con mayúsculas.
aMinúscula(palabra);
// Válidamos la entrada del usuario
if (esLetras(palabra)) {
wprintf(L"Error: La entrada contiene caracteres no válidos para validar un palíndromo.");
return 1;
}
if (esPalindromo(palabra)) {
wprintf(L"La palabra \"%ls\" es palíndromo.", palabra);
}
else {
wprintf(L"La palabra \"%ls\" no es palíndromo.", palabra);
}
}
else {
perror("Error al leer la entrada");
return 1; // Código de Error al leer la entrada.
}
return 0;
}
In this app that is working with Wide Char for Spanish special words, must verify if the word inputted by the user is a palindrome or not.
The issue happen when I run the app in the VSCode integrated terminal, if I insert "Araña" (Spider in English), I will get the next output: "ara", instead of Araña.
Activity