Verwenden von “\n” in scanf() in C [duplicate]

Lesezeit: 1 Minute

Benutzer-Avatar
nischchay2192

Ich habe fälschlicherweise verwendet scanf("%d\n",&val); In einem meiner Programme konnte ich das Verhalten, das die Funktion zeigte, nicht nachvollziehen.

int main(){
    int val;
    scanf("%d\n", &val);
    printf("%d\n", val);
    return 0;
}

Jetzt benötigte das Programm 2 ganzzahlige Eingaben und druckt die erste Eingabe, die eingegeben wurde. Welchen Unterschied sollte das extra machen \n bringt?

Ich habe versucht zu suchen, konnte aber die Antwort nicht finden, selbst durch das Handbuch von scanf.

Ein '\n' – oder ein beliebiges Leerzeichen – in der Formatzeichenfolge verbraucht eine ganze (möglicherweise leere) Folge von Leerzeichen in der Eingabe. Also die scanf kehrt nur zurück, wenn es auf das nächste Nicht-Leerzeichen oder das Ende des Eingabestroms trifft (z. B. wenn die Eingabe von einer Datei umgeleitet wird und ihr Ende erreicht ist, oder nachdem Sie stdin mit Strg-D geschlossen haben).

Benutzer-Avatar
rodrigo

Aus man scanf in meiner Linux-Box:

Eine Direktive ist eine der folgenden:

Eine Folge von Leerzeichen (Leerzeichen, Tabulator, Zeilenumbruch usw.; siehe isspace(3)). Diese Direktive entspricht einer beliebigen Menge an Leerraum, einschließlich keinem, in der Eingabe.

Übrigens, %d ist auch ein Richtlinie.

Also dein "%d\n" hat zwei Anweisungen, die erste liest die Zahl und die zweite … liest jede Menge Leerzeichen, einschließlich Ihres Zeilenendes. Sie müssen ein beliebiges Zeichen eingeben, das kein Leerzeichen ist, damit es stoppt.

1335450cookie-checkVerwenden von “\n” in scanf() in C [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy