Hola.
Estoy haciendo este programa:
Código C:
Ver original/*Un programa que sea capaz de almacenar los datos de 50 personas: nombre, dirección,
teléfono, edad (usando una tabla de structs). Deberá ir pidiendo los datos uno por uno,
hasta que un nombre se introduzca vacío (se pulse Intro sin teclear nada). Entonces
deberá aparecer un menú que permita:
o Mostrar la lista de todos los nombres.
o Mostrar las personas de una cierta edad.
o Mostrar las personas cuya inicial sea la que el usuario indique.
o Salir del programa*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main()
{
struct
{
char nombre[50];
char direccion[50];
int telefono;
int edad;
}datos[50];
int i;
for(i=0;i<50;i++)
{
printf("Introduce el nombre\n"); if((strcmp(datos
[i
].
nombre,""))==0)break; printf("Introduce la direccion"); gets(datos
[i
].
direccion); printf("Introduce el telefono"); scanf("%d",&datos
[i
].
telefono); scanf("%d",&datos
[i
].
edad);
}
return 0;
}
El problema que tengo es que en el bucle for, cuando i=0, me coge bien el strcmp; es decir, si tecleo intro cuando me pide el nombre sin poner nada, sale del bucle for. Pero cuando i es 1, directamente se cierra, sin que pueda escribir yo nada.
Por ejemplo, si el programa me pone
Introduce tu nombre - yo pongo intro - se cierra el programa
Eso está bien.
Pero si pongo:
Introduce el nombre - 1
Dirección - 2
Teléfono - 3
Edad - 4
Ahora me tendría que pedir otro nombre. Pues no; sino que me imprime por pantalla "Introduce el nombrePulse una tecla para continuar"...
Gracias.
Saludos.