Caracteres especiais em C

C++

26/08/2019

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

Curtidas 0

Respostas

Guilherme Gois

Guilherme Gois

26/08/2019

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