Não consigo utilizar dois scanf. [RESOLVIDO]

1. Não consigo utilizar dois scanf. [RESOLVIDO]

Jhevi
Jhevison

(usa Arch Linux)

Enviado em 28/05/2019 - 12:54h

Antes de qualquer coisa, sou iniciante em C, aceito críticas construtivas para melhor entendimento do assunto.

Seguinte, eu declarei duas variáveis do tipo char, então pedi um valor para o usuário (scanf), então retornei um "valor" para o usuário usando o if e else. Até aí tudo bem, o programinha estava funcionando.
Na segunda parte, eu fiz a mesma coisa que a primeira, só alterei a parte que iria pegar a variável. (Fora isto era a mesma coisa). Mas na hora de pegar o valor do usuário, o programa simplesmente fecha, se eu colocar um if else, o programa simplesmente pula pro else e termina as instruções.

Exemplo para ficar mais claro:

char a;
char h;

printf("Digite:");
scanf("%c", &a);

if( a == 'b') {
printf("correto");
}
else{
printf("Incorreto");
}

printf("Digite:");
scanf("%c", &h);
//aqui começa o erro

if( h == 'r'){
printf("correto");
else{
printf("incorreto");
}




  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 28/05/2019 - 15:03h

A conversão "%c" de scanf() é uma das que não faz descarte automático de espaços em branco (espaço, tabulações horizontal e vertical, quebras de linha ou de página e retorno de carro). Assim a marca de quebra de linha, referente à tecla Enter depois do primeiro scanf(), fica no buffer de entrada, e é ele que é consumido pelo segundo scanf().

Uma coisa que você pode fazer para descartar essa quebra de linha (e outros espaços) é colocar um espaço em branco no início da string de formatação do scanf(), após abrir aspas mas antes do antes do “%c”.


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)

3. Funcionou!

Jhevi
Jhevison

(usa Arch Linux)

Enviado em 28/05/2019 - 15:52h

Muito obrigado pela informação, acabei de testar e funcionou!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts