SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Mararía en Domingo 11 de Noviembre de 2007, 21:40

Título: Pequeño Gran Problema Con Archivos
Publicado por: Mararía en Domingo 11 de Noviembre de 2007, 21:40
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
Título: Re: Pequeño Gran Problema Con Archivos
Publicado por: Eternal Idol en Domingo 11 de Noviembre de 2007, 22:24
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++  ;)
Título: Re: Pequeño Gran Problema Con Archivos
Publicado por: Eternal Idol en Domingo 11 de Noviembre de 2007, 22:40
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.
Título: Re: Pequeño Gran Problema Con Archivos
Publicado por: Mararía en Lunes 12 de Noviembre de 2007, 02:34
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...)
Título: Re: Pequeño Gran Problema Con Archivos
Publicado por: su - en Lunes 12 de Noviembre de 2007, 17:35
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: