SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: Carlo17 en Viernes 4 de Junio de 2010, 01:12
-
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
cad=strtok(NULL,"tn");
-
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.
-
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.
-
Ya lo resolví muchas gracias por el apoyo de igual forma