Bucle que se salta un gets
Publicado por txoco (7 intervenciones) el 22/05/2009 14:36:00
Hola a todos;
Hice este sencillo programa para practicar la introducción de datos en una estructura pero resulta que, a pesar de no dar errores de compilación, al ejecutarse el programa se salta el gets que recoge persona[1].nombre y persona[2].nombre. ¿Alguien sabe porqué?
He de decir que con el compilador de turbo c++ funciona bien pero con gcc no.
gcc avisa diciendo que no debería utilizar gets.
codigo:
#include <stdio.h>
int main()
{
struct datos
{
char nombre [20];
char apellidos [30];
int edad;
};
struct datos persona[3];
int i;
printf ("INTRODUCE DATOS: ");
for (i=0;i<3;i++)
{
printf(" NOMBRE: ");
gets (persona[i].nombre);
fflush (stdin);
printf(" APELLIDOS: ");
gets (persona[i].apellidos);
fflush (stdin);
printf(" EDAD: ");
scanf ("%i", &persona[i].edad);
fflush(stdin);
}
int a;
for (a=0;a<3;a++)
{
printf("%s %s tiene %i años",persona[a].nombre, persona[a].apellidos,persona[a].edad);
}
return 0;
}
Un Saludo.
Hice este sencillo programa para practicar la introducción de datos en una estructura pero resulta que, a pesar de no dar errores de compilación, al ejecutarse el programa se salta el gets que recoge persona[1].nombre y persona[2].nombre. ¿Alguien sabe porqué?
He de decir que con el compilador de turbo c++ funciona bien pero con gcc no.
gcc avisa diciendo que no debería utilizar gets.
codigo:
#include <stdio.h>
int main()
{
struct datos
{
char nombre [20];
char apellidos [30];
int edad;
};
struct datos persona[3];
int i;
printf ("INTRODUCE DATOS: ");
for (i=0;i<3;i++)
{
printf(" NOMBRE: ");
gets (persona[i].nombre);
fflush (stdin);
printf(" APELLIDOS: ");
gets (persona[i].apellidos);
fflush (stdin);
printf(" EDAD: ");
scanf ("%i", &persona[i].edad);
fflush(stdin);
}
int a;
for (a=0;a<3;a++)
{
printf("%s %s tiene %i años",persona[a].nombre, persona[a].apellidos,persona[a].edad);
}
return 0;
}
Un Saludo.
Valora esta pregunta


0