go语言fmt.scanf 方法的问题

func main() {
    var a, b, c int
    for i := 0; i < 2; i++ {
        fmt.Scanf("%d,%d,%d", &a, &b, &c)
        fmt.Println(a, b, c)
    }

}

这段代码,我只输入一次,为什么会有两次输出结果?
输入:1,2,3
输出结果为:
1 2 3
1 2 3

阅读 3.9k
1 个回答

我在windows上测试过。猜测你可能是输入1,2,3加上了回车,1,2,3被第一次循环的fmt.Scanf读取了,第二次循环,fmt.Scanf读到你的enter就认为输入结束了,所以输出了两次1 2 3。有两种解决方案:

  1. 输入 1,2,3 4,5,5 再回车,这样会输出两行,一行1 2 3,一行4 5 6

2.将fmt.Scanf格式符改为fmt.Scanf("%d,%d,%d\n", &a,&b,&c)即将格式符后面加上\n,强制要求每次输入带上回车。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏