gets()

Post Reply
Message
Author
thomas

gets()

#1 Post by thomas »

gcc gibt beim Compilieren eines C-Programmes, welches die gets()-Funktion verwendet, folgende Warnung aus:

the 'gets' function is dangerous and should not be used.

Doch was gibt es für Alternativen? Ausser der scanf()-Funktion, welche nur Strings ohne Space, Newline und Form-Feed lesen kann. Und warum ist es gefährlich die gets()-Funktion zu benutzen?
Vielen Dank für Eure Hilfe!

wolfgang

Re: gets()

#2 Post by wolfgang »

Hi!

gets() prüft nicht die Länge des Puffers, so dass es bei zu langer Eingabe zu einem Segmentation fault kommen kann. So eine unsichere Funktion sollte man generell nicht verwenden. Ich habe vor Kurzem einen Artikel geschrieben, der sich mit dem Thema Eingabe befasst, zu finden unter

www.pro-linux.de/t_system/readline.html

Viele Grüße
Wolfgang // Pro-Linux-Team

User avatar
hjb
Pro-Linux
Posts: 3264
Joined: 15. Aug 1999 16:59
Location: Bruchsal
Contact:

Re: gets()

#3 Post by hjb »

Hi,

fgets() ist eine akzeptable Alternative. readline ist nur für interaktive Benutzung, während 99% aller Verwendungen von fgets nicht-interaktiv sind (Lesen aus einer Datei, wie der Name schon sagt).

Gruß,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

Post Reply