Maison  >  Article  >  développement back-end  >  Pourquoi Scanf échoue-t-il sous Windows et comment puis-je le réparer avec bufio ?

Pourquoi Scanf échoue-t-il sous Windows et comment puis-je le réparer avec bufio ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-01 11:12:30435parcourir

Why Does Scanf Fail on Windows and How Can I Fix It with bufio?

Résolution des problèmes de Scanf dans Go sous Windows

La fonction Scanf dans Go est connue pour ses complications potentielles, en particulier sur les systèmes Windows. Lors de l'exécution d'un programme qui utilise Scanf deux fois, le problème survient lorsque la deuxième requête d'entrée n'est pas enregistrée, ce qui entraîne la fin abrupte de la fonction.

Pour résoudre ce problème, il est recommandé d'utiliser le package bufio, qui propose un moyen plus convivial de gérer les opérations d’entrée et de sortie. Le code ci-dessous illustre l'alternative bufio :

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

    fmt.Print("Enter Username: ")
    username, _ := reader.ReadString('\n') // Read the username, discarding any errors

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

    return strings.TrimSpace(username), strings.TrimSpace(password) // Remove trailing newline characters
}</code>

La principale différence ici est l'utilisation de bufio.NewReader(), qui permet une gestion des entrées plus structurée. La fonction ReadString() lit les entrées de l'utilisateur jusqu'au caractère délimiteur spécifié ('n' dans ce cas), ce qui permet une récupération plus cohérente des entrées sur différents systèmes d'exploitation.

En utilisant cette approche basée sur bufio, vous pouvez contournez les pièges potentiels de Scanf et assurez une gestion fiable des entrées, que votre programme soit exécuté sur Windows ou Mac.

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