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

Problema com a função Scanf

Estou com um programa que não tá compilando corretamente. Ele apenas lê um número e um caractere:

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

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


 int n,i,j;
 char caractere;

 printf("Diga um número\n");
 scanf ("%d",&n);

 printf("Diga um caractere\n");

 scanf ("%c", &caractere);



return 0;

Ocorre que ele está pulando o scanf do caractere. O que será?

3 respostas
solução!

Oi Lucas, tudo bom?

Tenta adicionar a função:

fflush(stdin);

Antes de receber seu char. Algo como:

printf("Diga um número\n");
 scanf ("%d",&n);

 printf("Diga um caractere\n");
fflush(stdin);
 scanf ("%c", &caractere);

Isso pode estar acontecendo pois o buffer do seu teclado guarda alguns dados. Ao receber um char ele ja preenche com o que tem no buffer. Ao trabalhar com char, é sempre bom limpar o buffer!

Espero ter ajudado =)

Abraço!

Lucas, quando o programa «não para» num scanf significa muitas vezes que a memória de entrada está preenchida com caracteres que sobraram de um scanf anterior. Se esses caracteres são «brancos» pode resolver o problema colocando um espaço na cadeia de controlo. Este espaço obriga o scanf a ignorar todos os caracteres brancos (espaços, TAB, return)

 printf("Diga um caractere\n");
 scanf (" %c", &caractere);

Valeu, caras. Eu não lembrava do espaço. De fato, tem hora que a sintaxe pega e trava o cara.