Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/06/2015, 05:00
Srgy
 
Fecha de Ingreso: junio-2015
Ubicación: Murcia
Mensajes: 6
Antigüedad: 8 años, 11 meses
Puntos: 0
Programa para consultar datos struct

Hola a todos, saludaros en primer lugar.

Quisiera dejaros una duda que tengo, un problema más bien que no sé a qué se está debiendo en este programa. No se trata del programa completo si no de un trozo, lo he puesto así para simplificar, puesto que el que hice tiene más funciones que no vienen al caso.


En principio declaro
Código C++:
Ver original
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <ctype.h>
  4. #include <string.h>
  5.  
  6. using namespace std;
  7.  
  8. main()
  9. {
  10.       struct oficina{
  11.              int numero;
  12.              long CP;
  13.              char nombre[40];
  14.              char direccion[40];
  15.              char ciudad[40];
  16.              char municipio[40];
  17.              };
  18.  
  19.  
  20.              
  21.       struct oficina lista[200];
  22.      
  23.       lista[0].numero = 210;
  24.       lista[0].CP = 30008;
  25.       strcpy(lista[0].nombre, "Murcia");
  26.       strcpy(lista[0].direccion, "Plaza Circular, 6");
  27.       strcpy(lista[0].ciudad, "Murcia");
  28.       strcpy(lista[0].municipio, "MURCIA");
  29.      
  30. //Aque ire declarando mas variables... lista[n], esto es solo una prueba.
  31.  
  32.       int option;
  33.       cout<<"Selecciona operacion\n\n1) Consulta por localidad\n\n2) Consulta por numero de oficina\n\n";
  34.       cin>>option;      
  35.       switch(option)
  36.       {
  37.       case 1:
  38.            
  39.            system("cls");
  40.            char localidad[40];
  41.            cout<<"Introduce nombre de localidad\n"; /*Muestra esto por pantalla y acaba el programa en lugar de continuar (en este ejemplo no hay mas que mostrar por pantalla lo escrito
  42. , en el completo compara si la cadena introducida es igual a algun campo lista[n].ciudad de las variables declaradas y
  43. entonces muestra los datos de la (o las) oficinas que se encuentren en esa localidad, que es el objetivo del programa.*/
  44.            fgets(localidad,30,stdin);
  45.            cout<<localidad;
  46.            
  47.            
  48.  
  49.            break;  
  50.                    
  51.                     }
  52.      
  53.     system("PAUSE");
  54.     return 0;
  55. }
En esta parte el programa en el case 1 debe pedir el nombre de localidad y para que coja posibles espacios (ej. Los Angeles) hago uso de la función fgets, puesto que con el cout solo me tomará hasta que encuentre el caracter ' '.

Pues bien, tanto en el original como en esto que os envío cuando muestra por pantalla lo de introducir localidad no espera a recibir nada por la función fgets y termina la aplicación.

Lo curioso es que en la aplicación completa al principio funcionaba bien, quise poner un switch porque quiero un case2 que permita buscar las oficinas por numero.

¿Sabe alguien si es un error evidente?

Saludos.