Blog do Prof. Robson Soares Silva – Notícias e Dicas de TI

Tecnologias de Informação com ênfase em Java, Android, Banco de Dados Oracle/PgSQL/MySQL, Linux entre outras – UFMS Câmpus de Ponta Porã

jun

10

Linguagem C: solução da combinação do uso da função gets e a função scanf

By Robson Soares

Olá pessoal,

Para poder usar a função gets e scanf juntas, devemos após o uso do scanf, executar uma chamada à função fflush(stdin). esta função limpa o buffer do teclado, permitindo que a função gets funcione corretamente.

Exemplo:

#include “stdio.h”
#include “stdlib.h”
int main()
{
char nomes[5][100];// estamos declarando um vetor de 5 posições e em cada posição
// pode-se ter até 100 caracteres. Uma matriz de 5 x 100
float notas[5];

int count;
for (count=0;count<5;count++){
printf(“\nDigite um nome: “);
gets(nomes[count]);
printf(“\nDigite a nota deste aluno: “);
scanf(“%f”, ¬as[count]);
fflush(stdin); // esvazia o buffer do teclado
}
printf(“\n\nOs nomes informados foram os seguintes:\n\n”);
for (count=0;count<5;count++){
printf(“\nNome: %s\n”, nomes[count]);
printf(“\nNota: %.1f\n”, notas[count]);
}
system(“pause”);
return 0;
}

A função fflush(stdin), faz a limpeza do buffer do teclado, ela é útil para consumir, sem armazenar, todos os caracteres da entrada padrão, ou seja, limpa a entrada padrão. Assim o comando gets funciona normalmente após o uso da função scanf.

Referência: PUCRS

6 Comentários até agora

uneconomic@pawtuxet.marketplace” rel=”nofollow”>.…

???….

equivocal@mandatory.dispersement” rel=”nofollow”>.…

?????????….

inc@ballots.means” rel=”nofollow”>.…

good info!!…

forthcoming@asparagus.gastronomy” rel=”nofollow”>.…

good info!!…

gunny@selectively.fabric” rel=”nofollow”>.…

ñýíêñ çà èíôó!!…

suggesting@experiment.aspirants” rel=”nofollow”>.…

áëàãîäàðåí!…