kubi hat geschrieben: ↑Di Mai 03, 2022 6:33 pm
Hallo, da meine Suche bei Google und Co. nichts ergeben hat, habe ich mich das erste mal in einem Forum angemeldet.
Dann hoffen wir, dass wir uns als halbwegs würdig erweisen.
kubi hat geschrieben: ↑Di Mai 03, 2022 6:33 pm
Falls es wichtig ist. Ich benutze Linux und compiliere direkt im Terminal.
Normalerweise nicht, aber wer unter Linux anfängt, hat offenbar schonmal ein grundlegendes Interesse am Computer.
kubi hat geschrieben: ↑Di Mai 03, 2022 6:33 pm
Also ich habe jetzt diesen Code abgetippt:
Code: Alles auswählen
#include <stdio.h>
int main () {
char eingabe[100];
printf("Geben sie einen Text mit maximal 100 Zeichen ein: ");
gets(eingabe);
printf("Eingegebener Text: %s", eingabe);
return 0;
}
Beim compilieren wird das angezeigt:
Code: Alles auswählen
Warnung: Implizite Deklaration der Funktion »gets«; meinten Sie »fgets«? [-Wimplicit-function-declaration]
8 | gets(eingabe);
| ^~~~
| fgets
/usr/bin/ld: /tmp/ccGMhTLo.o: in function `main':
Auf den ersten Blick konnte ich auch nichts feststellen, aber ich habe es mal in onlinegdb.com reingeworfen und da zeigt noch etwas mehr:
Code: Alles auswählen
main.c:6:3: warning: ‘gets’ is deprecated [-Wdeprecated-declarations]
6 | gets(eingabe);
| ^~~~
In file included from main.c:1:
/usr/include/stdio.h:577:14: note: declared here
577 | extern char *gets (char *__s) __wur __attribute_deprecated__;
| ^~~~
gets gilt als veraltet, weil gets als Funktion auch gefährlich ist.
kubi hat geschrieben: ↑Di Mai 03, 2022 6:33 pm
Das wundert mich sehr. Ich habe den Code Buchstabe für Buchstabe abgetippt und mindestens 10 mal verglichen. Auch meine Freundin hab ich alles abgleichen lassen. Kann es sein das das Buch, Auflage 2021 nicht mehr aktuell oder einfach Schmarn ist?
In dem Fall ist das Buch nicht mehr aktuell. Schau mal hier:
gets
Da steht, dass die Funktion 2011 aus dem Standard entfernt wurde und am Ende der Seite, wie man die Funktion heute sicher benutzt.
kubi hat geschrieben: ↑Di Mai 03, 2022 6:33 pm
Ich habe öfter mal gelesen das man gets() besser nicht verwenden sollte, jedoch würde ich es nur ungern überspringen. Und sorry falls die frage bisschen einfach ist für das Forum, hab wie gesagt gerade erst angefangen das Programmieren zu lernen.
Das Forum ist für genau solche Fragen gedacht. Wenn Du mal 10 Jahre Programmiererfahrung hast und hier 50- bis 100-tausend Zeilen reinwirfst und fragst, wo der Fehler ist, kann sich da keiner mal eben spontan reinarbeiten. Bei 10 Zeilen geht das.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.