Caracteres especiais em C

26/08/2019

0

C++

Olá, tudo bem?

Estou iniciando agora no mundo da programação, lendo um pouco aqui e um pouco ali...
Hoje me deparei com um problema, no exercício básico de Olá Mundo!
o caractere "á" não estava aparecendo quando rodava o programa, procurei algumas soluções na internet e encontrei o #include<locale.h> e ficou assim:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

int main ()
{
    setlocale(LC_ALL, "Portuguese");
    printf ("Olá Mundo! \\\\\\\\n");
    system ("pause");
    return 0;
}

Porém não funcionou, Coloquei (LC_SLL, ""), com aspas vazias, troquei o Portuguese por portuguese, pt-br, portuguese-brazilian, etc... e nada deu certo.

Em outro site encontrei um jeito diferente e ficou assim:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int main ()
{
     UINT CPAGE_UTF8 = 65001;
     UINT CPAGE_DEFAULT = GetConsoleOutputCP();

  SetConsoleOutputCP(CPAGE_UTF8);
    printf ("Olá Mundo! \\\\\\\\n");
    system ("pause");
    return 0;
}


Desse jeito deu certo, o cmd reproduziu o "á" do Olá Mundo!
Porém, não encontrei nada sobre o porque dessa maneira funciona, alguém sabe me explicar o por que?
Acho que minha dúvida, também pode ser a de outro, e essa maneira de reproduzir os caracteres especiais também pode ajudar alguém

Obs: Estou usando o Visual Studio Code, com as extensões para C/C++

Muito obrigado!
Guilherme Gois

Guilherme Gois

Responder

Posts

26/08/2019

Guilherme Gois

Obs: No meu código, não coloquei aquele monte de \\\\\\\\\\
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar