Heim > Backend-Entwicklung > Golang > Warum überspringt Scanf die Eingabe unter Windows? Eine detaillierte Erklärung und Lösung.

Warum überspringt Scanf die Eingabe unter Windows? Eine detaillierte Erklärung und Lösung.

Mary-Kate Olsen
Freigeben: 2024-10-26 18:38:29
Original
601 Leute haben es durchsucht

Why Does Scanf Skip Input on Windows? A Detailed Explanation and Solution.

Macken der Scanf-Funktion unter Windows

Bei der Verwendung von Scanf für Benutzereingaben wurde ein eigenartiges Verhalten beobachtet: Eingaben werden beim ersten Mal erfolgreich abgerufen , überspringt jedoch die zweite Eingabeanforderung und beendet die Funktion abrupt. Dieses Problem tritt insbesondere bei der Ausführung auf Windows-Systemen auf.

Fragender Code:

<code class="go">func credentials() (string, string) {

    var username string
    var password string

    fmt.Print("Enter Username: ")
    fmt.Scanf("%s", &username)

    fmt.Print("Enter Password: ")
    fmt.Scanf("%s", &password)

    return username, password
}</code>
Nach dem Login kopieren

Lösung:

Scanfs Abhängigkeit von Leerzeichen als Trennzeichen und sein unintuitives Verhalten können problematisch sein. Um dies zu mildern, bietet die Verwendung des bufio-Pakets einen verfeinerten Ansatz:

<code class="go">func credentials() (string, string) {
    reader := bufio.NewReader(os.Stdin)

    fmt.Print("Enter Username: ")
    username, _ := reader.ReadString('\n')

    fmt.Print("Enter Password: ")
    password, _ := reader.ReadString('\n')

    return strings.TrimSpace(username), strings.TrimSpace(password) // Remove any trailing newline characters
}</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum überspringt Scanf die Eingabe unter Windows? Eine detaillierte Erklärung und Lösung.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage