Wenn ich quit gebe, wird das Programm nicht beendet; Ich frage mich, warum das so ist.
Übrigens wird input
als char *input;
deklariert.
Nachgestellter Zeilenumbruch in Ihrer Eingabe. Siehe man fgets . Testen Sie für "quit" + newline, zum Beispiel:
%Vor% Ich habe den letzten Satz total vermisst, re char *input
. Abhängig von der Architektur ist input
4 oder 8 Byte lang. Also ist der Code effektiv
zeigt nicht die tatsächliche Speichergröße an, auf die input
zeigt. Dies kann "funktionieren", solange die Eingabe kürzer als acht Bytes ist, aber die Eingabe wird abgeschnitten, wenn sie größer ist. Außerdem erhalten Sie den Rest der Eingabe beim nächsten Aufruf von fgets
.
Sie sollten entweder die tatsächliche Größe angeben oder den Rat von JonathanLeffler befolgen und stattdessen ein Char-Array deklarieren, z. B.
%Vor%oder
%Vor%Schlagen Sie Folgendes vor:
%Vor%Grund: Dies löst das Problem, dass Personen zusätzliche Zeichen hinzufügen (z. B. Leerzeichen vor oder nach dem Text).
Diese Lösung benötigt nur die Standardbibliothek (stdio.h) und liefert die gleichen Ergebnisse.
%Vor%