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.
Ich lach mich weg !!!! Probiers doch mal damit:
1 | Get_Miracle
|
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
