elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda ficheros de c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda ficheros de c++  (Leído 2,050 veces)
alpachino98

Desconectado Desconectado

Mensajes: 37


Valar Morghulis


Ver Perfil
Ayuda ficheros de c++
« en: 16 Enero 2017, 11:03 am »

Estoy haciendo el trabajo final de asignatura, tengo que crear una biblioteca. La primera función necesito que lea los usuarios de un fichero y los guarde como vectores, el problema es que la función para leer los usuarios se mete en un bucle infinito. Aquí les dejo el código:

Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. using namespace std;
  5.  
  6. struct fecha
  7. {
  8. int dia;
  9. int mes;
  10. int año;
  11. };
  12.  
  13. struct usuario
  14. {
  15. int DNI;
  16. string nombre;
  17. string apellidos;
  18. string direccion;
  19. string ciudad;
  20. int codigo_postal;
  21. string email;
  22. int telefono;
  23. fecha nacimiento;
  24. };
  25.  
  26. struct ubicacion
  27. {
  28. int pasillo;
  29. int estanteria;
  30. };
  31.  
  32. struct libros
  33. {
  34. string ISBN;
  35. string titulo;
  36. string autor;
  37. ubicacion ubicacion;
  38. int prestado;
  39. int valoracion;
  40. };
  41.  
  42. struct prestamos
  43. {
  44. int identificador;
  45. string ISBN;
  46. int DNI;
  47. string entrega;
  48. string devolucion;
  49. };
  50.   const int MAXUsuarios=5000;
  51.   const int MAXLibros=1000;
  52.   const int MAXPrestamos=10000;
  53.   typedef usuario VUsuario [MAXUsuarios];
  54.   typedef libros VLibros [MAXLibros];
  55.   typedef prestamos VPrestamos [MAXPrestamos];
  56.  
  57.   void FncMenu (int&  ,int&);
  58.   void FncLeerUsuarioFich (ifstream&, VUsuario&, int&);
  59.   void FncLeerLibrosFich (ifstream&, VLibros, int&);
  60.   void FcnLeerPrestamosFich (ifstream&, VPrestamos, int&);
  61.  
  62. int main ()
  63. {
  64.  
  65. VUsuario vu;
  66. VLibros vl;
  67. int tam;
  68. ifstream f_in;  
  69. ofstream f_out;
  70. usuario u;
  71. int opcion,subopcion;
  72. //string nombre;
  73. //int tel;
  74. do{
  75. FncMenu(opcion, subopcion);
  76. switch (opcion)
  77. {
  78. case 1:
  79. {
  80. f_in.open("usuarios.txt");
  81. if(f_in.fail())
  82. { cout<<"Error abriendo fichero usuarios"<<endl; }
  83. else
  84. { FncLeerUsuarioFich(f_in,vu,tam);
  85. f_in.close();}
  86. break;
  87. }
  88. case 2:
  89. {
  90. f_in.open("libros.txt");
  91. if(f_in.fail())
  92. { cout<<"Error abriendo fichero usuarios"<<endl; }
  93. else
  94. { FncLeerLibrosFich(f_in,vl,tam);
  95. f_in.close();}
  96. break;
  97. }
  98. }
  99. }while (opcion !=0);
  100. return 0;
  101. }
  102. void FncMenu ( int& opcion, int& subopcion)
  103. {
  104. do{
  105. cout<<endl;
  106. cout<<"----------MENU----------"<<endl;
  107. cout<<"1.Leer datos de un fichero "<<endl;
  108. cout<<"2.Dar alta"<<endl;
  109. cout<<"3.Dar de baja a un usuario"<<endl;
  110. cout<<"4.Mostrar informaci\242n"<<endl;
  111. cout<<"5.Guardar informaci\242n actual de la biblioteca"<<endl;
  112. cout<<"6.Buscar informaci\242n"<<endl;
  113. cout<<"7.Mostrar en pantalla la informaci\242n"<<endl;
  114. cout<<"8.Volcar informacion del informe"<<endl;
  115. cout<<"0.Salir"<<endl;
  116. cout<<"-------------------------------------------------"<<endl;
  117. cin>>opcion;
  118.  
  119. switch (opcion)
  120. {
  121. case 2:cout<<"1.Dar alta usuario"<<endl;
  122. cout<<"2.Dar alta libro"<<endl;
  123. cout<<"3.Dar alta prestamo"<<endl;
  124. cin>>subopcion;
  125. break;
  126. case 4 :cout<<"1.Mostrar informaci\242n de todos los usuarios"<<endl;
  127. cout<<"2.Mostrar informaci\242n de todos los libro"<<endl;
  128. cout<<"3.Mostrar informaci\242n prestamos"<<endl;
  129. cin>>subopcion;
  130. break;
  131. case 6 :cout<<"1.Buscar la informaci\242n de un usuario"<<endl;
  132. cout<<"2.Buscar informaci\242n de un libro"<<endl;
  133. cout<<"3.Buscar informaci\242n de un prestamo"<<endl;
  134. cin>>subopcion;
  135. break;
  136.  
  137. }
  138. }while (opcion<0 || opcion >8);
  139.  
  140. }
  141. void FncLeerUsuarioFich(ifstream& f_in      , VUsuario& vu   , int&  tam   )
  142. {
  143.   while(!f_in.eof())
  144.   {
  145.      f_in>>vu[tam].DNI;
  146.    getline(f_in,vu[tam].nombre);
  147. getline(f_in,vu[tam].apellidos);
  148. getline(f_in,vu[tam].direccion);
  149. getline(f_in,vu[tam].ciudad);
  150. f_in>>vu[tam].codigo_postal;
  151.    getline(f_in,vu[tam].email);
  152.    f_in>>vu[tam].telefono;
  153.    f_in>>vu[tam].nacimiento.dia;
  154.    f_in>>vu[tam].nacimiento.mes;
  155.    f_in>>vu[tam].nacimiento.año;
  156.   tam++;
  157.   cout<<"leido";
  158.  
  159.   };
  160. }
  161.  
Si alguien me puede ayudar porfavor..... :-\


· Los códigos deben ir en etiquetas GeSHi
>Lee las reglas
-Engel Lex


« Última modificación: 16 Enero 2017, 14:08 pm por engel lex » En línea

francosmp

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Ayuda ficheros de c++
« Respuesta #1 en: 17 Enero 2017, 03:04 am »

en tu funcion para leer veo que estas capturando un flujo que nose como estara delimitado, que yo sepa cuando usas un getline, solicitas la cadena completa hasta que acabe el flujo y el puntero de la libreria se situa en el siguiente registro, pero no veo que uses delimitadores. nose como trabajara pero anteriormente use fstream y no use delimitadores cuando trabajaba con archivos dat pero con otros como excel y txt si tuve que usarlos por su naturaleza. en la biblioteca stdlib sino me equivoco tambien levanta archivos de ese tipo pero tiene funcionalidad similar.creo que ese es tu problema, y te recomiendo que si vas a trabajar con ese tipo de estructuras trabajes con vectores dinamicos y bibliotecas extra para no estar definiendo estructuras como fecha y ubicacion.
Salu2


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con ficheros PDF
Dudas Generales
coyote_cojo 4 3,470 Último mensaje 26 Febrero 2011, 06:58 am
por coyote_cojo
Ayuda con ficheros en C
Programación C/C++
heddydearmas 0 1,526 Último mensaje 25 Mayo 2013, 21:50 pm
por heddydearmas
iDStore lista ficheros y directorios ocultos de ficheros .DS_Store
Nivel Web
MichBukana 0 3,535 Último mensaje 29 Agosto 2013, 09:21 am
por MichBukana
[Ayuda] Ficheros en C
Programación C/C++
sora_ori 4 2,372 Último mensaje 10 Junio 2014, 14:21 pm
por sora_ori
Ayuda ficheros c++
Programación C/C++
oskrg55 3 2,157 Último mensaje 8 Agosto 2015, 06:32 am
por oskrg55
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines