Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/02/2012, 10:34
DickGumshoe
 
Fecha de Ingreso: enero-2012
Mensajes: 68
Antigüedad: 12 años, 3 meses
Puntos: 0
Problema con strcmp

Hola.

Estoy haciendo este programa:

Código C:
Ver original
  1. /*Un programa que sea capaz de almacenar los datos de 50 personas: nombre, dirección,
  2. teléfono, edad (usando una tabla de structs). Deberá ir pidiendo los datos uno por uno,
  3. hasta que un nombre se introduzca vacío (se pulse Intro sin teclear nada). Entonces
  4. deberá aparecer un menú que permita:
  5. o Mostrar la lista de todos los nombres.
  6. o Mostrar las personas de una cierta edad.
  7. o Mostrar las personas cuya inicial sea la que el usuario indique.
  8. o Salir del programa*/
  9.  
  10. #include <stdlib.h>
  11. #include <stdio.h>
  12. #include <string.h>
  13.  
  14. int main()
  15. {
  16.     struct
  17.     {
  18.     char nombre[50];
  19.     char direccion[50];
  20.     int telefono;
  21.     int edad;
  22.     }datos[50];
  23.    
  24.     int i;
  25.    
  26.    
  27.       for(i=0;i<50;i++)
  28.       {
  29.         printf("Introduce el nombre\n");
  30.         gets(datos[i].nombre);
  31.         if((strcmp(datos[i].nombre,""))==0)break;
  32.         printf("Introduce la direccion");
  33.         gets(datos[i].direccion);
  34.         printf("Introduce el telefono");
  35.         scanf("%d",&datos[i].telefono);
  36.         printf("Introduce la edad");
  37.         scanf("%d",&datos[i].edad);
  38.        
  39.       }
  40.    
  41.     system("pause");
  42.     return 0;
  43. }

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.