Maison  >  Article  >  développement back-end  >  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
Mary-Kate Olsenoriginal
2024-10-26 18:38:29491parcourir

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>

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>

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