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

Problemas com Acentuação (Já tentei locale.h/setlocale)

Boa tarde!

Estou tentando adicionar acentuação aos programas em C mas estou tendo dificuldade.

Este é meu código:

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main()
{
  setlocale(LC_ALL, "");
  printf("Utilizando caracteres e acentuação da língua portuguesa!\n\n");
  printf("localidade: %s", setlocale(LC_ALL, NULL));
}

Esta é minha saída:

C:\Users\tauan\Alura\Curso_C\CI>teste.exe
Utilizando caracteres e acentuação da língua portuguesa!

localidade: Portuguese_Brazil.1252

Já tentei alterar a codificação do CMD para utf-8 (utilizando chcp 65001) e não obtive sucesso.

Obrigado pela atenção.

5 respostas
solução!

Boa tarde Tauan! Realmente acertar a questão da acentuação em C não é algo tão simples.

Segue abaixo uma alternativa que apesar de dar um pouco mais de trabalho funciona bem.

Você substitui os caracteres acentuados por %c e coloca nele a numeração correspondente.

Por exemplo, no código abaixo:

#include <stdio.h>

int main()
{
    int idade;
    printf("Quantos anos voc%c tem: ", 136);  /* ê = 136 */
    scanf("%d", &idade);
    printf("%d? Puxa, voc%c parece que tem s%c %d 
anos!\n", idade, 136, 162, idade * 2); /* ê = 136; ó = 162 */
    return 0;
}

Para uma lista completa dos caracteres correspondentes use o código abaixo:

#include <stdio.h>

int main()
{
    int x;
    for (x = 0; x <= 255; x++)
    {
        printf("[%d]: %c\n", x, x);
    }
    return 0;
}

Espero ter ajudado! Abraços

Olá Andre! Realmente é uma boa alternativa! Irei utiliza-la!

Obrigado!

Legal Tauan!! Só marca a resposta como solução pra ajudar outros com a mesma dúvida!!

Abraços!!

Consegui resolver o problema que impedia o funcionamento da função setlocale da biblioteca locale.h.

O arquivo .c estava sendo salvo com codificação utf-8. Quando alterei para codificação para Windows-1252 funcionou.

Eu acho que como a codificação estava errada antes do compilamento o executável era criado erroneamente. Por isso não adiantou eu alterar a codificação do CMD.

Show Tauan! Mais uma que aprendi também!

Abraços