PDA

Visualizza la versione completa : [C] Allocazione dinamica in acquisizione dati da file


UltraBeginner
15-12-2006, 16:42
Ciao a tutti,

ho un problema con un acquisizione da file.....

il file e fatto cosi

PIPPO
GIACOMO
MATTEO

vorrei riuscire a prendere le varie stringhe con un puntatore a char...

char * stringa;

pero quando faccio

fscanf(filepointer,"%s",stringa);

il compilatore si blocca (debuggando)

io credo che si debba allocare della memoria per stringa...ma non conosco a priori le dimensioni dei nomi....
si potrebbe usare la fgetc(filepointer) e allocare un carattere alla volta chiudendo poi la stringa con un \0?

qualche suggerimento? passo ai vettori statici?

MItaly
15-12-2006, 16:57
È ovvio che si verifichi un errore, perché stringa è un puntatore non inizializzato... secondo me la cosa migliore da fare è dichiarare stringa come un array di dimensioni ragionevoli (diciamo 4 KB) unitamente all'uso "buffer-overflow proof" della fscanf:


char stringa[4096];
fscanf(filepointer,"%4096s",stringa);
.

UltraBeginner
15-12-2006, 17:03
Originariamente inviato da MItaly
È ovvio che si verifichi un errore, perché stringa è un puntatore non inizializzato... secondo me la cosa migliore da fare è dichiarare stringa come un array di dimensioni ragionevoli (diciamo 4 KB) unitamente all'uso "buffer-overflow proof" della fscanf:


char stringa[4096];
fscanf(filepointer,"%4096s",stringa);
.

potresti perpiacere spiegarmi l'uso "buffer-overflow proof" della fscanf?

MItaly
15-12-2006, 17:12
Era un modo di dire... semplicemente dici alla fscanf di non leggere più di 4095 caratteri, così da non sforare il buffer.
P.S.: ops... errorino... :stordita:

char stringa[4096];
fscanf(filepointer,"%4095s",stringa);

Loading