• Viernes 8 de Noviembre de 2024, 21:33

Autor Tema:  Pequeño Gran Problema Con Archivos  (Leído 1466 veces)

Mararía

  • Miembro activo
  • **
  • Mensajes: 53
    • Ver Perfil
Pequeño Gran Problema Con Archivos
« en: Domingo 11 de Noviembre de 2007, 21:40 »
0
Hola! Esta semana estamos diseñando un DFA. Tenemos que leer los estados desde un archivo y la cadena de entrada desde otro. Ya llevo varias semanas usando archivos de entrada/salida y nunca me ha pasado lo que esta vez. Los archivos no están vacíos, sin embargo, nunca los lee porque no entra al bucle, que está definido tal que:
Código: Text
  1. while (fichin.peek() != EOF){
  2.  

Como siempre, adjunto los códigos (y los archivos de lectura, para que veais que no están vacíos   :P   Y ya sabeis, toda ayuda es apreciada   ;)

Oh, y una copia del comando de entrada, para que no penseis que me he hecho un lío al ejecutar:
Citar
./DFA Automata1.DFA Entradas.in Salida.txt

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Pequeño Gran Problema Con Archivos
« Respuesta #1 en: Domingo 11 de Noviembre de 2007, 22:24 »
0
Antes que nada al compilarlo VC++ da este warning (supongo que no tendra que ver pero es un error seguro):

Código: Text
  1.  
  2. void Estado::Setmu(unsigned a){
  3.   if (estsig[0] == 100)
  4.     estsig[0] = a;
  5.   if (estsig[1] == 100)
  6.    estsig[1] == a; //<< aca
  7. }
  8.  
  9.  

Estado.C(68) : warning C4553: '==' : operator has no effect; did you intend '='?

Es bastante descriptivo el warning y evidentemente lo que querias hacer era una asignacion y no una comparacion. Un punto para VC++  ;)

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Pequeño Gran Problema Con Archivos
« Respuesta #2 en: Domingo 11 de Noviembre de 2007, 22:40 »
0
Vas a tener que depurarlo y ver cual es el error devuelto, a mi si me lee el archivo y despues da una excepcion no controlada por mal manejo de memoria asi que ya veo que tenes mas trabajo por delante.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Mararía

  • Miembro activo
  • **
  • Mensajes: 53
    • Ver Perfil
Re: Pequeño Gran Problema Con Archivos
« Respuesta #3 en: Lunes 12 de Noviembre de 2007, 02:34 »
0
Ahora ya no lo hace... bueno, de todas formas, le puse unos errores y unas comprobaciones a ver si estaba abriendo los archivos... ahora el problema es a la hora de ejecutar... Me da un error no se de que, creo que de memoria... pero el caso es que no pasa de cierta línea

Código: Text
  1. void ImprimirArchivo (Automata A,char* nombresal){
  2.   ofstream fichout;
  3.   fichout.open(nombresal, ios::out | ios::app);
  4.   fichout << A;
  5.   fichout.close();
  6. }//Aquí es donde deja de ejecutarse, por lo que escribe en el archivo una sola vez
  7.  

Y este es el error:
Citar
*** glibc detected *** ./DFA: free(): invalid pointer: 0xbfa27944 ***
======= Backtrace: =========
/lib/libc.so.6[0x48e52efd]
/lib/libc.so.6(cfree+0x90)[0x48e56550]
/usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0x493cc871]
./DFA[0x80493f0]
./DFA[0x804a869]
./DFA[0x804adb1]
/lib/libc.so.6(__libc_start_main+0xdc)[0x48e02f2c]
./DFA(__gxx_personality_v0+0x7d)[0x8048e81]
======= Memory map: ========
00c3a000-00c3b000 r-xp 00c3a000 00:00 0          [vdso]
08048000-0804c000 r-xp 00000000 08:05 421536     /home/Mavi/TALF/P5/DFA
0804c000-0804d000 rwxp 00003000 08:05 421536     /home/Mavi/TALF/P5/DFA
08b83000-08ba4000 rwxp 08b83000 00:00 0
4841e000-48437000 r-xp 00000000 08:05 713372     /lib/ld-2.5.so
48437000-48438000 r-xp 00018000 08:05 713372     /lib/ld-2.5.so
48438000-48439000 rwxp 00019000 08:05 713372     /lib/ld-2.5.so
48ded000-48f24000 r-xp 00000000 08:05 713374     /lib/libc-2.5.so
48f24000-48f26000 r-xp 00137000 08:05 713374     /lib/libc-2.5.so
48f26000-48f27000 rwxp 00139000 08:05 713374     /lib/libc-2.5.so
48f27000-48f2a000 rwxp 48f27000 00:00 0
48f2c000-48f51000 r-xp 00000000 08:05 713400     /lib/libm-2.5.so
48f51000-48f52000 r-xp 00024000 08:05 713400     /lib/libm-2.5.so
48f52000-48f53000 rwxp 00025000 08:05 713400     /lib/libm-2.5.so
4930a000-49315000 r-xp 00000000 08:05 718114     /lib/libgcc_s-4.1.1-20061011.so.1
49315000-49316000 rwxp 0000a000 08:05 718114     /lib/libgcc_s-4.1.1-20061011.so.1
49318000-493f9000 r-xp 00000000 08:05 2434252    /usr/lib/libstdc++.so.6.0.8
493f9000-493fd000 r-xp 000e0000 08:05 2434252    /usr/lib/libstdc++.so.6.0.8
493fd000-493fe000 rwxp 000e4000 08:05 2434252    /usr/lib/libstdc++.so.6.0.8
493fe000-49404000 rwxp 493fe000 00:00 0
b7e00000-b7e21000 rw-p b7e00000 00:00 0
b7e21000-b7f00000 ---p b7e21000 00:00 0
b7fb9000-b7fbb000 rw-p b7fb9000 00:00 0
b7fc9000-b7fcb000 rw-p b7fc9000 00:00 0
bfa15000-bfa2b000 rw-p bfa15000 00:00 0          [stack]
Abortado
Dice algo de un puntero inválido ... pero de ahí en adelante, chino mandarín... (además de que no encuentro el puntero inválido ese que dice que hay...)
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Pequeño Gran Problema Con Archivos
« Respuesta #4 en: Lunes 12 de Noviembre de 2007, 17:35 »
0
Como lo estas compilado....

En Automat.h, que es eso de...
Código: Text
  1. #include <vector>
  2.  
:blink:

Creo que los archivos deberian ser .cpp, usar g++ o cpp y no gcc  :P

UPDATE: Xcode no instalo librerias de C++, ya se que es vector  :rolleyes:
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.