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!