Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo zusammen!

Ich hab da n kleines Prob...und zwar habe ich folgendes Beispiel aus "C von Anfang an" im KDevelop 2.1 unter Suse Linux 8.0 eingegeben und bekomme vom Debugger die Fehlermeldung : "the 'gets' function is dangerous and should not be used." Bin nu ich doof, der Compiler oder der Author von dem Buch? :rolleyes:

/* bspl0037.c */

#include <stdio.h>

#include <string.h>

main() {

char satz[80];

printf("\nBitte einen Satz eingeben\n>");

gets(satz);

printf("\n%s",satz);

printf("\nDer Satz besteht aus %i Zeichen.",strlen(satz));

printf("\n\nsatz[5] enthaelt eine binaere Null.\n");

satz[5]='\0';

printf("\n%s",satz);

printf("\nDer Satz besteht aus %i Zeichen.",strlen(satz));

}

Geschrieben

Die Meldung des Compilers weist Dich dezent darauf hin, dass "gets" ein paar Fallstricke hat. Gets() ist sollte wenn moeglich vermieden werden, da Du keinerlei Bounds-Checking beim Einlesen der Strings machen kannst. D.h. Wenn der Nutzer einen String eingibt der die von dir vorgesehene Laenge ueberschreitet, wird auf nicht allokierten Speicher zugegriffen. Zitat aus der Man-Page:

BUGS

Never use gets(). Because it is impossible to tell with_

out knowing the data in advance how many characters gets()

will read, and because gets() will continue to store char_

acters past the end of the buffer, it is extremely danger_

ous to use. It has been used to break computer security.

Use fgets() instead.

It is not advisable to mix calls to input functions from

the stdio library with low - level calls to read() for the

file descriptor associated with the input stream; the

results will be undefined and very probably not what you

want.

Nic

Geschrieben

Da es sich nur um eine Warnung des Linkers handelt und ich ansonsten keine Fehler (im Sinne von: der Compiler bricht ab) finden kann, solltest Du eigentlich eine Datei mit dem Namen "a.out" auf der Platte finden (Aufruf mit: "./a.out")

Nic

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...