Maison > développement back-end > Golang > Pourquoi Scanf ignore-t-il la saisie sous Windows ? Une explication détaillée et une solution.

Pourquoi Scanf ignore-t-il la saisie sous Windows ? Une explication détaillée et une solution.

Mary-Kate Olsen
Libérer: 2024-10-26 18:38:29
original
639 Les gens l'ont consulté

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

Bizarres de la fonction Scanf sous Windows

Lors de l'utilisation de Scanf pour la saisie utilisateur, un comportement particulier a été observé : il récupère avec succès l'entrée la première fois , mais ignore la deuxième demande d'entrée et quitte brusquement la fonction. Ce problème se produit spécifiquement lors de l'exécution sur les systèmes Windows.

Code en question :

<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>
Copier après la connexion

Solution :

La dépendance de Scanf aux espaces comme séparateurs et son comportement non intuitif peuvent être problématiques. Pour atténuer cela, l'utilisation du package bufio offre une approche plus raffinée :

<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>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal