Der Martin: (C) Prg mit Enter beenden, aber nur bei neue Zeile

Beitrag lesen

Hallo Markus,

wenn ich folgendes Testprogramm verwende, passiert es, dass das Programm dann abbricht, wenn ich genau 7 Zeichen eingebe und Enter drücke.

bist du sicher, dass du richtig gezählt hast? Sind es nicht vielleicht acht Zeichen und ein Enter, die das Programmende bewirken? Das wäre nämlich logisch.

Denn diese Anweisung

fgets(string, 8, stdin);

liest ja _bis zu_ 8 Zeichen von stdin, einschließlich des Return-Zeichens, das unter Unixoiden ja generell nur ein Linefeed '\n' ist.
Wenn du also 8 druckbare Zeichen eingibst und dann Return drückst, werden im ersten Schleifendurchlauf die 8 Zeichen gelesen und verarbeitet, im nächsten Durchlauf der Rest der Eingabe - das ist das noch nicht verarbeitete Linefeed.

So long,
 Martin

--
Lache, und die Welt wird mit dir lachen.
Schnarche, und du schläfst allein.