14
respostas

Erro de acentuação gráfica

Pois bem, elaborei o programa de acordo com as aulas de linguagem C, tudo direito. Mas o que vem me incomodando é justamente, quando executo no cmd, os erros ortográficos onde não aparece ç nem os acentos.... Alguém poderia me dizer como posso resolver este problema?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(){

    printf("******************************************\n");
    printf("* Bem vindo ao nosso jogo de adivinhação *\n");
    printf("******************************************\n");

    int segundos = time(0);
    srand(segundos);

    int numerogrande = rand();

    int numerosecreto = numerogrande % 100;
    int chute;
    int tentativas = 1;
    double pontos = 1000;

    int acertou =0;

    int numerodetentativas = 5;

    for (int i=1; i<= numerodetentativas; i++) {
        printf("Tentativa %d\n", tentativas );
        printf("Qual é o seu chute?\n");

        scanf("%d", &chute);
        printf("Seu chute foi %d\n", chute);

        if (chute<0){
            printf("Você não pode chutar números negativos!\n");
            continue;
        }

        acertou = (chute == numerosecreto);
        int maior = chute > numerosecreto;

        if(acertou) {
            break;
        }

        else if(maior){
            printf("Seu chute foi maior que o número secreto\n");
        }

        else{
            printf("Seu chute foi menor que o número secreto\n");
        }

        tentativas++;

        double pontosperdidos = abs(chute-numerosecreto)/(double)2;
        pontos = pontos - pontosperdidos;

    }

    printf("Fim de jogo!\n");

    if (acertou){
        printf("Você ganhou !\n");
        printf("Você acertou em %d tentativas!\n",tentativas);
        printf("Total de pontos: %.1f\n",pontos );



    }else{
        printf("Você perderu! Tente de novo\n");

    }

}
14 respostas

Ayrton, já tentou usar

setlocale(LC_ALL, "Portuguese");

dentro do main?

Então, ficaria assim?

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

int main(){
    setlocale(LC_ALL, "Portuguese");

    printf("******************************************\n");
    printf("* Bem vindo ao nosso jogo de adivinhação *\n");
    printf("******************************************\n");

    int segundos = time(0);
    srand(segundos);

    int numerogrande = rand();

    int numerosecreto = numerogrande % 100;
    int chute;
    int tentativas = 1;
    double pontos = 1000;

    int acertou =0;

    int nivel;
    printf("Qual o nível de dificuldade?\n");
    printf("(1) Fácil (2) Médio (3) Difícil\n\n");
    printf("Escolha:\n");
    scanf("%d", &nivel);

    int numerodetentativas;
//comando switch é igual ao if
    switch(nivel){
        case 1:
            numerodetentativas=20;
            break;
        case 2:
            numerodetentativas=15;
            break;
        default:
            numerodetentativas=6;
            break;
    }

    for (int i=1; i<= numerodetentativas; i++) {
        printf("Tentativa %d\n", tentativas );
        printf("Qual é o seu chute?\n");

        scanf("%d", &chute);
        printf("Seu chute foi %d\n", chute);

        if (chute<0){
            printf("Você não pode chutar números negativos!\n");
            continue;
        }

        acertou = (chute == numerosecreto);
        int maior = chute > numerosecreto;

        if(acertou) {
            break;
        }

        else if(maior){
            printf("Seu chute foi maior que o número secreto\n");
        }

        else{
            printf("Seu chute foi menor que o número secreto\n");
        }

        tentativas++;

        double pontosperdidos = abs(chute-numerosecreto)/(double)2;
        pontos = pontos - pontosperdidos;

    }

    printf("Fim de jogo!\n");

    if (acertou){
        printf("Você ganhou !\n");
        printf("Você acertou em %d tentativas!\n",tentativas);
        printf("Total de pontos: %.1f\n",pontos );



    }else{
        printf("Você perderu! Tente de novo\n");

    }

}

Isso. Quando puder, executa o código e posta aqui se funcionou.

Não deu certo, quando executo o programa aparece isto:


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

Qual o nível de dificuldade? (1) Fácil (2) Médio (3) Difícil

Escolha:

Qual o compilador que você está utilizando?

MinGW Installer O instrutor recomendava usar o prompt de comando, utilizando o compilador gcc.

Tenta alterar a fonte do cmd, clica com o botão direito e vá em Propriedades. Coloque a fonte consolas e teste, caso não dê certo, deixe a fonte consolas e mude o

setlocale(LC_ALL, "Portuguese");

Para

setlocale(LC_ALL, "portuguese-brazilian");

Olá, tudo bem ? O problema é a codificação usada no cmd do windows. Se você digitar chcp no prompt de comando irá aparecer o código 850 que equivale a latin1 se não me engano. Você deve mudar para 65001 que equivale a utf-8. para isso digite:

> chcp 65001

Isso é uma das formas de resolver o seu problema porém pode bagunçar a saída de outros comandos.

Pessoal, até agora nada... Acredito que seja o meu compilador, depois irei procurar outros ou quando achar necessidade mesmo.

Já tentei de tudo e não resolveu. Eu comecei no Alura com o curso de lógica de programação, misturando html e japa script. Pois bem, neste curso o instrutor pedia para colocar a linha (meta charset"utf-8") e resolvia tudo (pelo menos o problema de acentuação gráfica hehehe), pensei que teria algum comando na linguagem C semelhante a esse.

Fala, Ayrton!

Testa o seguinte:

setlocale(LC_CTYPE, "");

O LC_CTYPE se refere apenas à transformação de caracteres, e a string vazia tenta utilizar o locale padrão do sistema. Testa isso e responde aqui se funcionou.

Abraços!

Olá, você utiliza algum editor de texto tipo notepad++? Marque a opção Formatar -> codificação em ANSI.

Ele vai funcionar junto a diretiva #include locale.h e, setlocale(LC_ALL, "Portuguese");

Opa, tenta aqui estava com o mesmo problema,tenta rodar essse comando no cmd:

REG ADD HKCU\Console\%SystemRoot^%_system32_cmd.exe /v CodePage /t REG_DWORD /d 65001

Boa tarde, estou com o mesmo problema. Tentei todas as soluções que deram aqui, mas nada funcionou. Estou usando o Sublime, que foi o sugerido pelo professor do curso de C.

Acabei de postar mas continuei procurando aqui mesmo no forum. Achei em um dos tópicos uma solução dada pela Gisele (se eu não me engano) que funcionou.

Aqui vai o que ela disse: "Descobri o problema, tem que ver o encoding que está sendo salvo o arquivo. Funcionou depois que eu mudei o Save Encoding do Sublime para Western (Windows 1252)"