Estoy intentando analizar un archivo y tener una matriz de punteros de caracteres cuya longitud es la cantidad de líneas en el archivo. Quiero copiar cada línea en un elemento de esta matriz, pero sigo recibiendo un error de segmentación. No veo lo que estoy haciendo mal, por lo que si alguien pudiera ayudar sería muy apreciado. Aquí está mi código.
char * unsplitLines[numLines]; char line[20]; int i; for(i = 0; i < lines; i++) { fgets(line, 20, fp); //printf("%s\n", line); unsplitLines[i] = line; }
La función de obtención funciona bien, pero la asignación posterior a la causa de la falla de segmentación.
fgets
no le asignan un búfer, por lo que todos los elementos en unsplitLines
almacenan la misma line
puntero y su contenido es la línea final del archivo.
prueba asprintf
char * unsplitLines[numLines]; char line[20]; int i; for(i = 0; i < lines; i++) { fgets(line, 20, fp); asprintf(unsplitLines[i], "%s", line); }