1
resposta

programa só imprime se eu der flush após o print

Olá, rodei o código do primeiro tópico:

#include<stdio.h>

int main(){
    // imprime o cabeçalho
    printf("#####################################\n");
    printf("# Bem-vindes ao jogo de adivinhação #\n");
    printf("#####################################\n");

    int numerosecreto = 42;

    int chute;

    printf("Qual é o seu chute? ");

    scanf("%d", &chute);

}

Usando a linha de comando do git bash (no Windows), consigo compilar sem problemas pelo gcc $ gcc jogoadivinhacao.c -o jogoadivinhacao.out porém quando vou rodar o programa, ele não imprime nada, fica aguardando que eu faça qualquer input. Ai, quando digito qualquer coisa ele roda o programa e encerra. (como na imagem) Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Pesquisando, encontrei como solução usar fflush(stdout); após o último print. Mas gostaria de saber se há um outro jeito que eu não precise toda vez por o flush após o print.

1 resposta

Olá, Fernanda! Tudo bem?

O fflush forçar a gravação nos buffers do kernel. Nesse artigo temos mais informações sobre.

Nesse tópico temos uma ótima explicação da instrutora Cecília sobre o funcionamento desse comando e outros utilizados na limpeza de buffer.

  • Uma outra solução que você pode tentar utilizar o fprintf (destaquei uma parte da explicação escrita aqui):

"fprintf formata e imprime uma série de caracteres e valores na saída stream . Cada função argument (se houver) é convertida e saída de acordo com a especificação de formato correspondente no format . Para fprintf , o format argumento tem a mesma sintaxe e usa-o em printf."

Caso ainda assim não consiga solucionar, me avise que posso procurar outras alternativas para o seu problema.

Aguardo retorno!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software