Arquivos

Você está navegando nos arquivos da categoria C/C++.

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