Gracias, no sabía que había que reservar también cada uno de los vectores, pensaba que con tener la matriz reservada ya estaba para llegar y escribir en ella.
Pero sin embargo el problema insiste, de hecho, luego de declarar la matriz con sus vectores, verifico su tamaño con
sizeof(matriz), me retorna 8, por lo que el
String linea tiene tamaño 8, le puse tamaño 1024, ya que si leo un párrafo, este no tiene salto de lineas, es una linea continua hasta que llega a un punto aparte.
char** matriz
= (char**)malloc(sizeof(char*)*numPal
); for (j
=0; j
<numPal
; j
++) matriz
[j
] = (char*)malloc(15*sizeof(char));
void leer(char *archivoTexto, char** matriz, int palabras){
FILE* archivo;
int i = 1;
char linea [1024];
if((archivo
= fopen(archivoTexto
, "r")) == NULL
){ perror("error al abrir el fichero\n"); }
else{
while(fgets(linea
, sizeof(linea
), archivo
)){ matriz
[0] = strtok(linea
, " "); for( ;(matriz
[i
] = strtok( NULL
, " ")) != NULL
&& i
< palabras
; i
++){ }
}
}
}
Por cierto... soy nuevo en C y aun no capto miles de cosas, cuando me mostraste como asignarle memoria a matriz con malloc
"(char**)malloc(NumPal*sizeof(char*))", no le estoy asignando el tamaño de memoria NumPal a toda la matriz? o le estoy asignando ese tamaño a cada vector?
PD2: Apesar del cambio, sizeof(matriz) me sigue arrojando tamaño 8, pero sin embargo, la matriz almacena todo el texto, que es lo que me está devolviendo sizeof??