1
resposta

Meu código não esta sendo exibido na ordem certa

O meu programa não esta sendo exibido na ordem correta do código. Ele pede primeiro o valor do chute para depois exibir todo o resto do código.

Código:

#include <stdio.h>

int main() {

    //Variáveis
    int numero_secreto;
    int chute;

    //Imprime cabeçalho do jogo
    printf("—————————————————————————————————————————\n");
    printf("* Bem-vindo a nosso jogo de adivinhação *");
    printf("\n—————————————————————————————————————————\n");

    //Atribuição de valor
    numero_secreto = 42;

    printf("\nDigite o seu chute: ");
    scanf("%d", &chute);

    printf("\nSeu chute é %d", chute);
}

Terminal: Insira aqui a descrição dessa imagem para ajudar na acessibilidadeÉ "como" se a função scanf("%d", &chute); fosse chamada no começo do código, mas ele não esta sendo chamado.

Alguém pode me ajudar? Por favor.

1 resposta

esse comportamento ocorre em todos os terminais? Aqui, ao executar o código, funcionou normalmente.

resposta que o chatgpt deu talvez te ajude.

O comportamento que você está observando no seu programa pode estar relacionado ao buffer de entrada padrão (stdin). Em alguns ambientes, como o terminal do Git Bash ou o MinGW no Windows, pode ocorrer uma leitura do scanf de forma antecipada, especialmente quando há algum dado na entrada ou quando o terminal está funcionando de uma forma diferente.

Aqui estão algumas sugestões para resolver esse problema:

  1. Limpe o buffer de entrada antes de scanf: Uma prática comum é limpar o buffer para evitar que valores indesejados interfiram com a leitura de scanf.
fflush(stdin); // Limpa o buffer de entrada
printf("\nDigite o seu chute: ");
scanf("%d", &chute);
  1. Use setbuf(stdout, NULL); para desativar o buffer de saída: Em alguns casos, desativar o buffer de saída pode ajudar a exibir as mensagens na ordem correta.
#include <stdio.h>

int main() {
    setbuf(stdout, NULL); // Desativa o buffer de saída

    // Variáveis
    int numero_secreto;
    int chute;

    // Imprime cabeçalho do jogo
    printf("—————————————————————————————————————————\n");
    printf("* Bem-vindo a nosso jogo de adivinhação *");
    printf("\n—————————————————————————————————————————\n");

    // Atribuição de valor
    numero_secreto = 42;

    printf("\nDigite o seu chute: ");
    scanf("%d", &chute);

    printf("\nSeu chute é %d", chute);

    return 0;
}
  1. Executar o código em outro ambiente: Se o problema persistir, tente compilar e executar o programa em um terminal diferente, como o terminal de comando padrão do Windows (cmd) ou PowerShell. Alguns ambientes de terminal podem tratar a entrada e a saída de forma um pouco diferente.