cybercrow
27-11-2001, 19:39
Hi,
ich bin gerade dabei C zu lernen. In meinem Buch wird zum einlesen von strings die Funktion gets() verwendet. Wenn ich diese Beispiele compilieren bringt mir der compiler eine Warnung das man gets() nicht verwenden sollte. 'man gets' sagt das man an der stelle von gets fgets verwenden soll. Kann mir mal einer eine kurzes Beispiel zu fgets zeigen? fgets braucht ja irgendwie mehr optionen als gets, bin aber nicht richtig dahinter gekommen wie ich das umsetzen muss.
Also gets() wird in meinem Buch so verwendet:
int main()
{
char satz[80];
printf("Satz eingeben: ");
gets(satz);
return 0;
}
Wie müsste das jetzt mit fgets() aussehen?
Und dann nochwas. Warum man gets() nicht verwenden soll wird in den manpages so erklärt:
Da es unmöglich ist zu sagen, wie viele Zeichen
gets() lesen wird, ohne die Daten vorher zu kennen und da
gets() fortfährt und Daten über das Ende des Puffers hin*
aus speichert, ist es sehr gefährlich, diese Funktion zu
benutzen. Sie wurde benutzt um in Rechner einzubrechen.
Benutze fgets() anstatt.
Kennt sich damit einer genauer aus. Wo gneau liegt denn die Gefahr in gets() ??? Wie soll man damit ein einen Rechner einbrechen können ??
Danke!
ich bin gerade dabei C zu lernen. In meinem Buch wird zum einlesen von strings die Funktion gets() verwendet. Wenn ich diese Beispiele compilieren bringt mir der compiler eine Warnung das man gets() nicht verwenden sollte. 'man gets' sagt das man an der stelle von gets fgets verwenden soll. Kann mir mal einer eine kurzes Beispiel zu fgets zeigen? fgets braucht ja irgendwie mehr optionen als gets, bin aber nicht richtig dahinter gekommen wie ich das umsetzen muss.
Also gets() wird in meinem Buch so verwendet:
int main()
{
char satz[80];
printf("Satz eingeben: ");
gets(satz);
return 0;
}
Wie müsste das jetzt mit fgets() aussehen?
Und dann nochwas. Warum man gets() nicht verwenden soll wird in den manpages so erklärt:
Da es unmöglich ist zu sagen, wie viele Zeichen
gets() lesen wird, ohne die Daten vorher zu kennen und da
gets() fortfährt und Daten über das Ende des Puffers hin*
aus speichert, ist es sehr gefährlich, diese Funktion zu
benutzen. Sie wurde benutzt um in Rechner einzubrechen.
Benutze fgets() anstatt.
Kennt sich damit einer genauer aus. Wo gneau liegt denn die Gefahr in gets() ??? Wie soll man damit ein einen Rechner einbrechen können ??
Danke!