Analog meinem ersten Beitrag heute möchte ich jetzt einen String per
Terminal einlesen.
char c[100];
print("Starting mytest\n");
gets(c);
gets erwartet ja am Ende ein NEWLINE. Wie realisiere ich das im
Terminal? Eingabe von Enter oder \n im Terminalfenster bewirkte kein
Weiterlaufen des Programms.
* Indem du dein Terminalprogramm so umkonfigurierst, dass
es das Zeichen wegschickt (entweder CR oder LF), welches
deine spezielle Implementierung von gets() sehen
möchte
* Indem du dir selbst eienen Ersatz für gets() schreibst
und dadurch die Kontrolle darüber hast, mit welchem
Zeichen eine Eingabe als abgeschlossen gilt.
PS: Wer gets() benutzt, sollte sofort seine Lizenz zum
Programmieren verlieren. gets() ist eine *Un*funktion
die am besten nie in C aufgenommen worden wäre. Immer
fgets() benutzen.
Was ist falsch an gets()?
Schau dir die Argumentliste an und dann beantworte die
Frage: Wie kann gets() verhindern, dass ein Benutzer
durch seine Eingabe den Buffer den gets() bekommt
überlaufen lässt.
Die Antwort: gar nicht
Und deshalb gehören gets() Programmierer sofort mit dem
nassen Fetzen verjagt.
Gast
#541728
Ich lach mich weg !!!! Probiers doch mal damit:
1 | |
Siehe Anhang ! Sorry, konnte ich mir nicht verkneifen. Seit wann gibt es denn hier Werbung ? LG EC
Danke für den Hinweis auf CR. Dass gets in einem guten Programm nichts zu suchen hat ist mir klar. Es geht ja hier nur um einen kleinen Test.
