• Miércoles 20 de Noviembre de 2024, 18:25

Autor Tema:  Error de segmentación  (Leído 1308 veces)

Carlo17

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Error de segmentación
« en: Viernes 4 de Junio de 2010, 01:12 »
0
Hola tengo un problema con el siguiente código pero no logro averiguar por qué ocurre, básicamente es un fallo de segmentación con una variable tipo string llamada cad, aquí proporciono el código:

    FILE *file;
    string cad;
    char cosa[15],*a,*b,x;
    int n,cont=0,i=0,j=0,band=0;
   
    file=fopen("compilador09b.lr","r");
    fgets(cosa,20,file);
    n=atoi(cosa);
    int idRegla[n],lonRegla[n];
    string strRegla[n];
    while(cont<n){
       fgets(cosa,20,file);
       a=strtok(cosa,"t");
       b=strtok(NULL,"t");
       cad=strtok(NULL,"tn");
       idRegla[cont]=*a-48;
       lonRegla[cont]=*b-48;
       strRegla[cont]=cad;
       cont++;
    }
No es el código completo pero en la parte subrayada es donde ocurre el error, lo que hace el algoritmo básicamente es leer un archivo y en base a los datos que tiene crea varias matrices con las especificaciones del archivo. Es cara generar la tabla LR en un analizador sintáctico. Gracias por la atención.

EI: juntando mensajes.

Disculpen olvidé subrayar la línea en cuestión, es la siguiente
Cita de: "Carlo17"
cad=strtok(NULL,"tn");

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Error de segmentación
« Respuesta #1 en: Viernes 4 de Junio de 2010, 01:36 »
0
strtok devuelve un char * (puntero a char). ¿Si le cambias el tipo a cad que pasa?

Si queres ver que pasa con el codigo original usa gdb para depurarlo.

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.

Carlo17

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Error de segmentación
« Respuesta #2 en: Viernes 4 de Junio de 2010, 01:40 »
0
Sí ya lo intenté, aunque lo cambie por una cadena de C truena sin remedio, lo interesante es que con otros ejemplos sí funciona, la diferencia es que en los que sí funciona el archivo las cadenas que se guardan el cad son de un solo caracter, pero en este ejemplo primero lee y guarda sin problema la cadena "programa" y en el segundo bucle del while truena.

Carlo17

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Error de segmentación
« Respuesta #3 en: Viernes 4 de Junio de 2010, 02:15 »
0
Ya lo resolví muchas gracias por el apoyo de igual forma