Uso de Getchar DUDA

Iniciado por chewbaccaChaka, 11 Mayo 2018, 21:08 PM

0 Miembros y 1 Visitante están viendo este tema.

chewbaccaChaka

Hola,
Tengo una duda, tengo este codigo, es de estructuras. apenas las ando aprendiendo. Si lo compilo asi tal cual, deja ingresar los datos del primer usuario, pero para ingresar el segundo en la consola pasa que sale "Ingrese nombre" "Ingrese sexo" Osea salen los dos al mismo tiempo.
Se soluciono con ingresar esto
Citarwhile(getchar()!='\n');   

Y queda bien, mi duda es porque se usa While Getchar?
Les dejo el codigo que falla sin el While getchar

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

#define ELEMENTOS 2

struct informacion{
   char nombre[20];
   char sexo[20];
   char edad[3];
   float salario[10];
}informacion[ELEMENTOS];
int main (){
   int i;   
   for(i=0;i<ELEMENTOS;i++)
   {
      printf("Ingrese nombre: \n");
      gets(informacion.nombre);
      
      printf("Ingrese sexo: \n");
      gets(informacion.sexo);
      
      printf("Ingrese edad: \n");
      scanf("%f",&informacion.edad);
      
   }
   
   
   
   
   return 0;
}

Aqui dejo el codigo con el getchar
Citar#include <stdio.h>
#include <stdlib.h>

#define ELEMENTOS 2

struct informacion{
   char nombre[20];
   char sexo[20];
   char edad[3];
   float salario[10];
}informacion[ELEMENTOS];
int main (){
   int i;   
   for(i=0;i<ELEMENTOS;i++)
   {
      printf("Ingrese nombre: \n");
      gets(informacion.nombre);
      
      printf("Ingrese sexo: \n");
      gets(informacion.sexo);
      
      printf("Ingrese edad: \n");
      scanf("%f",&informacion.edad);
      while(getchar()!='\n');   
   }
   
   
   
   
   return 0;
}

MAFUS

¿Sabes que hace getchar()?