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
Mary-Kate OlsenOriginal
2024-10-26 18:38:29590Durchsuche

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>

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>

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!

Stellungnahme:
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