7iFF ha scritto:
Innanzitutto grazie,però io sapevo che la funzione gets non è "sicura" perchè rischia di creare molti overflow,non esiste qualche funzione più sicura?
fgets() è stata predisposta proprio avendo in mente la necessità di salvaguardarsi contro gli sfondamenti del buffer. Se guardi bene, fgets() appare come gets() ma ha quella "f" davanti, che fa riferimento all'uso di uno stream. Lo stream può rappresentare un file, ma anche lo stream stdin, che riguarda proprio i dati inseriti in console.
Leggi qui, vedrai che ti si accende la lampadina:
http://digilander.libero.it/uzappi/C/librerie/funzioni/fgets.html
Occhio al modo in cui viene trattato il limite imposto da "size", perché se l'utente inserisce più di (size-1) caratteri il '\n' NON è in coda alla stringa che ricevi e nello stdin restano dei caratteri, per così dire, "pendenti" che potrebbero condizionare le tue successive interrogazioni allo stdin stesso. Ti conviene fare un po' di prove inserendo stringhe brevi su un piccolo buffer e osservare bene cosa succede usando un debugger, se no ti si spacca il cranio per niente e finisci per demoralizzarti.
P.S. Stai frequentando una scuola? Quale? A che punto sei? Perché se hai quindici anni è un conto, se ne hai ventidue è un altro conto.