Ecco qualcosa che potrebbe maggiormente interessare ai neoprogrammatori C:

GETS() e FGETS()


GET STRING: acquisisce il valore di una stinga di caratteri in ingresso



SCHEMA RIASSUNTIVO


punt = gets(stringa);

punt = fgets(stringa,lunghezza,filepunt);



char*punt; puntatore alla stringa memorizzata

char*stringa; puntatore alla zona di memoria destinata a contenere la stringa
acquisita
nt lunghezza; numero di byte che compongono la zona di memoria destinata a
a contenere la stringa acquisitad
FILE*filepunt; puntatore al file



CARATTERISTICHE


Acquisisce una stringa di caratteri dal file:

* Standard Input: gets()
* Specificato da filepunt: fgets()

La stringa da acquisire è definita come l'insieme di caratteri che precedono un carattere di ritorno a capo (oppure lunghezza -1 nel caso di fgets() )

La funzione gets() sostituisce il ritorno a capo con il carattere terminatore “\0” e quindi il carattere terminatore non può far parte di una stringa.
La funzione fgets() inserisce invece il terminatore dopo l'eventuale carattere di ritorno a capo.



Cosa restituisce??

punt = NULL in caso di errore o fine file

= stringa se l'operazione ha avuto esito positivo


NB

La funzione gets() ricordo che non prevede il parametro di ingresso”lunghezza” per definire le dimensioni della zona di memoria destinata a contenere la stringa.
Quindi, in poche parole, se usiamo male questa funzione rischiamo dei bei buffer overflow

gaglio,