PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : frage zu gets()



fugu
29-12-2002, 11:06
Hi
Ich hab ein Programm gemacht, wo ich zum einlesen in einen char Array gets() verwende.
Das Programm funktioniert, nur bei compilieren meckert der gcc das ich die gets() funktion nicht verwenden soll. Wieso? Welche Probleme könnten entstehen?

Was verwendet ihr statt dessen? Jedesmal eine while Schleife zu machen find ich zu umständlich..

tkortkamp
29-12-2002, 11:34
Auszug aus man-Page zu gets:


gets() reads a line from stdin into the buffer pointed to by s until
either a terminating newline or EOF, which it replaces with '\0'. No
check for buffer overrun is performed (see BUGS below).

BUGS
Never use gets(). Because it is impossible to tell without knowing the
data in advance how many characters gets() will read, and because
gets() will continue to store characters past the end of the buffer, it
is extremely dangerous to use. It has been used to break computer
security. Use fgets() instead.


c ya,
Tobias

fugu
30-12-2002, 17:57
also liest ihr immer mit while schleife ein?

tkortkamp
30-12-2002, 20:20
Wenn ich das mit einer while-Schleife mach benutzt ich fgetc (ein Zeichen nach dem anderen)
Wenn ich aber weiß das die Zeile nicht mehr als beispielsweise 1024 Zeichen lang sein wird, dann lese ich das in einem Rutsch mit fgets(buffer, 1024, stream);

c ya,
Tobias