Forum: Compiler & IDEs String aus Terminal einlesen


von M. I. (seventh_son)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

* 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.

von ecslowhand (Gast)


Angehängte Dateien:

Lesenswert?

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

von M. I. (seventh_son)


Lesenswert?

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
Noch kein Account? Hier anmelden.