Penso che l' errore sia proprio questa istruzione:
parole[i][j] = '\0';
In quanto se non sbaglio, essendo questo vettore una porzione contigua di celle (20000 nel tuo caso), se tu metti questa istruzione se tu salvi la prima parola, che per esempio è lunga 5, tu dici che questa stringa di 20000 caratteri terminerà alla 5 lettera. Quindi libereresti tutti i caratteri rimanenti e non li ritroveresti all' iterazione successiva, perchè il vettore è stato ridotto.
Quindi la cosa più semplice è allocare un vettore lungo quanto lo spazio del file (se il file è di 2000 byte, tu dichiari un char vector[2000]), salvi il file in una stringa e poi ti scansioni tutta questa stringa. Credo che poi fatto questo basti fare un ciclo con uno 'sscanf' per prelevare la stringa e poi 'sprintf' per salvarla dentro ogni stringa del vettore parole[1000][20].
Così credo che funzioni.
Ciao!

Rispondi quotando