View Single Post
Old 23-11-2007, 14:33   #7
ciroshare
Member
 
Iscritto dal: May 2004
Messaggi: 139
Quote:
Originariamente inviato da andbin Guarda i messaggi
Per la dimensione dell'array hai diversi modi per rendere il codice "generico":
a) scansionare tutto il file, determinare il numero di righe e quindi allocare l'array. Tale soluzione è scomoda e poco performante.
b) Allocare e in seguito ri-allocare dinamicamente l'array principale, per intenderci, l'area che hai assegnato al puntatore 's' nel tuo sorgente.
Io ho utilizzato il metodo a e sinceramente ho poco chiaro il metodo b...

Quote:
Originariamente inviato da andbin Guarda i messaggi
Per la allocazione delle righe è semplice: tu hai fatto un ciclo for in cui fai una fgets per leggere una riga e metterla in 'line'. Bene, sempre nel corpo di quel ciclo dovrai fare alcune cose dopo la fgets: determinare la lunghezza della stringa, allocare memoria sufficiente (occhio al carattere in più per il nullo finale!) quindi copiare la stringa dal buffer all'area allocata.
Più chiaro ora?
Praticamente in questo modo:
for (i=0; i<2; i++){
fgets(line,256,fp);
s[i] = malloc (sizeof (strlen(line)));
strcpy(s[i],line);
printf("s[%d]=%s\n",i,s[i]);
}

Ultima modifica di ciroshare : 23-11-2007 alle 14:37.
ciroshare è offline   Rispondi citando il messaggio o parte di esso