Ich versuche ein einfaches C-Programm für eine Klasse zu erstellen und eine der Voraussetzungen ist, dass ich scanf
/ printf
für alle Ein- und Ausgaben verwenden muss. Meine Frage ist, warum wird mein scanf
nach der for-Schleife im main übersprungen und das Programm einfach beendet.
Hier ist mein Code
%Vor% Ich konnte es "reparieren", indem ich ein weiteres identisches scanf
nach dem ersten hinzufüge, aber ich würde es vorziehen, das einzige zu verwenden.
Das in stdin
nach dem letzten int
angegebene Zeichen für neue Zeilen wurde beim letzten Aufruf von scanf()
nicht verbraucht. Der Aufruf von scanf()
nach der for
-Schleife verbraucht also das Zeichen für die neue Zeile und wird fortgesetzt, ohne dass der Benutzer etwas eingeben muss.
Um zu korrigieren, ohne einen weiteren scanf()
-Aufruf hinzufügen zu müssen, können Sie den Formatbezeichner " %c"
in der scanf()
nach der for
-Schleife verwenden. Dadurch wird scanf()
alle führenden Leerzeichen (einschließlich der neuen Zeile) überspringen. Beachten Sie, dass der Benutzer etwas anderes als eine neue Zeile eingeben muss, um das Programm zu beenden.
Zusätzlich:
Überprüfen Sie das Ergebnis von scanf()
, um sicherzustellen, dass es den übergebenen Variablen tatsächlich einen Wert zuweist:
Dies ist eine Aufgabe (und wird immer wahr sein):
%Vor%