Quote:
Originariamente inviato da ciroshare
s = (char**) malloc (2 * sizeof (char*));
for (i=0; i<2; i++){
fgets(line,256,fp);
s[i]=line;
|
La allocazione dell'array è corretta (2 elementi di tipo char*).
È sbagliata concettualmente la assegnazione a questi elementi! Facendo s[i]=line tu assegni ad ognuno degli elementi l'indirizzo del buffer 'line' che è 1 solo e che contiene di volta in volta l'ultima riga letta. Facendo così, i due elementi punteranno sempre ad un unico buffer in cui c'è scritta semplicemente l'ultima riga letta dal file.
Soluzione: devi allocare memoria per ogni riga. Leggi una riga mettendola in 'line', calcoli la lunghezza, allochi memoria sufficiente in base alla lunghezza, copi la riga nell'area allocata e quindi assegni il puntatore nell'array.