Skip to content

[Windows] VSCode terminal not working with letter "ñ,á,é,í,ó,ú" from spanish alphabets #229324

Closed as not planned
@DevDorrejo

Description

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

Labels

*questionIssue represents a question, should be posted to StackOverflow (VS Code)info-neededIssue requires more information from poster

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions