Stringhe C++

di il
3 risposte

Stringhe C++

Salve,
Avrei una curiosità/dubbio sull'argomento di cui l'oggetto di questo post.
Ho scritto un programma C++ (a cui mi sto avvicinando) per provare le funzioni sulle stringhe.
Ho inserito come header #include <cstdio>, così da poter usare la funzione gets().
Al momento della compilazione ( con g++) compare un messaggio di avvertimento la cui ultima riga è la seguente: "function gets() is dangerous and should not be used" (Il messaggio è solo di avvertimento, dato che, dopo aver controllato, il file era stato compilato ed era eseguibile).
Mi sapete spiegare il perchè di questo, e in particolare del perchè gets() potrebbe essere pericolosa?
Grazie.

3 Risposte

  • Re: Stringhe C++

    Come nell'altro thread simile, la gets è pericolosa perché facile oggetto di attacchi di tipo "buffer overflow" (vedi documentazione su questo problema se non lo conosci). Per questo è deprecata.

    Puoi usare la fgets.

    Fra l'altro non si capisce se tu intendi utilizzare le stringhe del C++ (ovvero gli oggetti di classe string) o i vettori di char del C
  • Re: Stringhe C++

    Non avevo notato ci fosse un altro post simile al mio, scusa.
    Sto seguendo, come testo, il "C++ from the ground up" in cui le stringhe, e le relative funzioni, sono prima presentate usando gli array ( quindi in maniera del tutto analoga al C ).
    Per ora non ho ancora iniziato a lavorare sugli oggetti, per cui il problema era solo legato alla funzione gets() e al messaggio che avevo visualizzato.
  • Re: Stringhe C++

    Bene, quindi usa la fgets
Devi accedere o registrarti per scrivere nel forum
3 risposte