Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/11/2013, 01:55
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Problemas al leer archivo txt desde c++

creo que te falla en EOF (abreviatura de end-of-file, fin de fichero en inglés)
Por eso no entras al bucle creo
creo que cierras el fichero dentro del bucle y solo lo abres fuera del bucle.
O sea para que puedas escribir en el debes de abrirlo antes, eso solo se ve que esta abierto antes del bucle.
Al final del bucle lo cierras y ya no se vuelve a abrir.
creo que la solucion seria poner la linea reg = fopen("empleados.txt","r"); dentro del bucle primario al principio
Código C++:
Ver original
  1. #include "enlace.h"
  2.  
  3. int main()
  4. {
  5.     char ciclo,codigo[20],pass[20],acod[20],apass[20];
  6.     int c=0,i=0;
  7.     reg = fopen("empleados.txt","r"); // Abres el archivo al principio y lo cierras al final del bucle primario, pero no lo vuelves a abrir...
  8.                                                           // ...dentro del bucle primario.
  9.  
  10.     system("color F1");
  11.  
  12.    
  13.     do  // al estar abierto el fichero el código funciona una vez y al final se cierra lo que te imposibilita que entre al bucle interno
  14.     {
  15.         reg = fopen("empleados.txt","r"); //Aqui antes de usar el fichero lo deberías abrir ya que lo cierras al final.
  16.  
  17.         system("cls");
  18.         cout<<"SISTEMA IDENTIFIQUESE\n\n\n";
  19.        
  20.         cout<<"Codigo de empleado: ";
  21.         cin>>codigo;
  22.         cout<<"Password: ";
  23.         cin>>pass;
  24.         while(c!=EOF)   // Aquí se evalúa si no estas en el final del fichero, como lo tienes cerrado el fichero no se da esta condición, aquí ...  
  25.                                  // ...creo que falla, la segunda vez que llegas aquí el fichero esta cerrado y saltas todo el bucle este XD
  26.         {
  27.             fscanf(reg," %[^\t]",acod);
  28.             c=fscanf(reg," %[^\n]",apass);
  29.  
  30.             cout<<endl<<acod<<endl<<apass<<endl;
  31.  
  32.             if(!strcmp(codigo,acod)&&!strcmp(apass,pass))
  33.                 cout<<"entrando"<<endl<<endl;
  34.  
  35.         }
  36.         cout<<"Pass incorrecto\n\nDESEA CONTINUAR s/n";
  37.         c=0;                        //Aun que vuelvas esto a 0 al usar fclose abajo ya no tienes fichero abierto para que tu ...
  38.                                        //...bucle interno vuelva a trabajar.
  39.         fclose(reg);             //Una segunda solución seria no cerrar el fichero dentro del bucle ya que la c le pones a 0 asi no lo tendrias que...
  40.                                        //...que volver a abrir.
  41.         ciclo=getch();
  42.     }while(ciclo=='s'||ciclo=='S');
  43.  
  44.     //Aquí es donde deberías poner fclose si no quieres estar abriendo y cerrando el fichero 500 pares de veces XDD
  45.  
  46.     return 0;
  47. }

No puedo probar tu programa por que falta el fichero.h de la cabecera pero creo que el error es este que puse.
Si no es así a ver si alguien mas sabe algo, si puedes subir el otro fichero.h podemos probar a ver donde falla.
Saludos y suerte!

Última edición por vangodp; 01/11/2013 a las 05:04