首页  >  文章  >  后端开发  >  为什么 Scanf 在 Windows 上失败以及如何使用 bufio 修复它?

为什么 Scanf 在 Windows 上失败以及如何使用 bufio 修复它?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-01 11:12:30435浏览

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

解决 Windows 上 Go 中的 Scanf 问题

Go 中的 Scanf 函数因潜在的复杂性而闻名,尤其是在 Windows 系统上。当执行两次使用 Scanf 的程序时,当第二个输入请求未注册时,就会出现问题,导致函数突然终止。

要解决此问题,建议使用 bufio 包,它提供了更用户友好的方式来处理输入和输出操作。下面的代码演示了 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>

这里的主要区别是 bufio.NewReader() 的使用,它可以实现更结构化的输入处理。 ReadString() 函数读取用户输入,直到指定的分隔符(在本例中为“n”),从而在不同操作系统之间实现更一致的输入检索。

通过利用这种基于 bufio 的方法,您可以绕过 Scanf 的潜在陷阱并确保可靠的输入处理,无论您的程序是在 Windows 还是 Mac 上执行。

以上是为什么 Scanf 在 Windows 上失败以及如何使用 bufio 修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn