Originariamente inviato da andbin
Forse non ti è chiaro un concetto che invece è fondamentale. Il codice che ho postato io all'inizio serve solo ed esclusivamente per allocare la matrice di puntatori alle stringhe.
Non alloca lo spazio per i caratteri delle stringhe. A questo ci devi pensare tu.
Adesso ho capito l'errore che facevo. In pratica ogni elemento della matrice puntava alla variabile stringa, a questa variabile assegnavo un valore diverso ogni volta che leggevo una stringa nuova, ma l'indirizzo era lo stesso. Io invece devo allocare uno spazio per ogni stringa che leggo.
codice:
char *stringa;
for(i=0;i<righe;i++){
for(j=0; j<colonne; j++){
stringa = (char*)malloc(10*sizeof(char)); /* qui alloco lo spazio per la stringa letta */
fscanf(fp,"%s",stringa);
matrice[i][j] = stringa;
printf("%s ", matrice[i][j]);
}
Detto questo come potrei usare la soluzione qui sotto??
codice:
fscanf(fp,"%s",matrice[i][j]);