Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Acentuação com setlocale não funciona

#include <stdio.h>
#include <locale.h>

int main(){

    setlocale(LC_ALL, "Portuguese");

    //imprime cabeçalho do jogo
    printf("******************************************\n");
    printf("* Bem vindo ao nosso jogo de adivinhação *\n");
    printf("******************************************\n");

    int numerosecreto = 42;

    // ao usar o %d declara-se a variavel inteira, com isso, ao final, com virgula
    // voce declara qual a variável a ser buscada no programa!
    printf("O numero %d é o numero secreto. Nao conta pra ninguem!", numerosecreto);

}

Mesmo com o código acima, o cmd segue imprimindo desse jeito:


  • Bem vindo ao nosso jogo de adivinhação *

O numero 42 é o numero secreto. Nao conta pra ninguem!

3 respostas

Olá Luciano.

Poderia me dizer se está usando alguma IDE , como devC++ ou CodeBlocks ? E também está no windows ou no linux ?

Testei seu código e ele está funcionando normalmente, então acredito que deve ser algum problema relacionado ao compilador ou ao sistema operacional.

Fico no aguardo do retorno, bons estudos.

Estou usando Windows 10, e o compilador MinGW. Para a criação dos códigos, Sublime.

solução!

Olá Luciono.

Consegui reproduzir o problema, ele aconteceu por conta do encoding que o Sublime usa por padrão que é o UTF-8 e devemos mudar para o Western (ISO 8859-1) e dessa maneira o caracteres serão salvos com o encoding que o compilador está esperando.

Para resolver abra o seu código no Sublime, vá em Preferences na aba superior e clica em Settings (print).

Na tela que abriu coloque o código na aba Preferences.sublime-settings, isso vai mudar o encoding padrão e vai habilitar a visualização do encoding atual do arquivo (print).

// Settings in here override those in "Default/Preferences.sublime-settings",
// and are overridden in turn by syntax-specific settings.
{
    "show_encoding": true,
    "default_encoding": "ISO-8859-1",
}

Depois disso pode salvar e fechar.

Agora voltando para a tela do nosso código, nela vamos executar uma ação que vai mudar o encoding do nosso arquivo então ,ATENÇÃO, todas partes do código que tiver acento vão ser modificadas então guarde seu código em bloco de notas ou terá que modificar todos os lugares com acento.

Vá na parte inferior onde está escrito UTF-8 clique (print). , vá na opção Reopen with Encoding e finalmente selecione Western (ISO 8859-1)(print)..

A partir dessa ação seu código vai ter os acentos alterados, então ou cole o código novamente ou manualmente faça a correção.

Agora pode compilar o código novamente e os acentos devem funcionar normalmente, me avise caso não tenha dado certo ou tenha alguma duvida.

Bons Estudos.