neanch\'io sono un drago del C, ma mi sono imbattuto proprio ieri nella funziona gets
dal
progetto gnu suggeriscono molto caldamente di usare fgets al suo posto, perchè gets non ha il minimo controllo sulla dimensione della stringa che prende in input, e non è possibile impedire a priori di mandarla in overflow
per ottenere il medesimo comportamento di una chiamata tipo
char *line[100]
gets(line)
puoi usare
char *line[101]
int n = 100
fgets(line, n, stdin)
n è il fattore limitante, e devi definirlo di 1 più piccolo rispetto a line, perchè fgets include il \"\\n\" (sarebbe il \"newline\", ma joomla mi sopprime il backslash

) di fine riga e aggiunge un NULL in fondo al tutto, mentre gets mette solo il NULL.
dopo n caratteri, qualunque stringa ci sia in input viene letta la volta dopo
io devo leggere un file dallo stdin riga per riga, e alla fine ho usato getline, che è ancora più avanzata: non può andare in overflow perchè allarga il buffer a seconda della stringa che trova B)
è un poco più complessa da usare, ma non di molto:
http://www.crasseux.com/books/ctutorial/getline.htmlciao
tindal
Post modificato da: tindal, alle: 2006/12/12 16:07