golang fmt.Fscanf()遇到换行返回值为0

请教:
有一个文件 test.in
内容 是
6 5
3 4
要读取里面的内容,但是在 读取完 6 5 后会读取到一个0 然后才能读取到3
代码如下

file, err := os.Open("test.in")
if err != nil {
    panic(err)
}
var one, two,third,four int

fmt.Fscanf(file, "%d", &one) //one 6
fmt.Fscanf(file, "%d", &two) //two 5
fmt.Fscanf(file, "%d", &third) // third 0
fmt.Fscanf(file, "%d", &four )  //four 3

如何避免读取到0
多谢

阅读 6.6k
2 个回答

Scan, Fscan, Sscan treat newlines in the input as spaces.

fmt

这就是他工作的机制,了解了原理,要继续采用这个方式的话,可以先格式化一下,把换行替换成空格,在交给Fscanf

新手上路,请多包涵

改成:
fmt.Fscan(file, &one) //one 6
fmt.Fscan(file, &two) //two 5
fmt.Fscan(file, &third) // third 3
fmt.Fscan(file, &four ) //four 4

Fscanf从r扫描文本,根据format 参数指定的格式将成功读取的空白分隔的值保存进成功传递给本函数的参数。返回成功扫描的条目个数和遇到的任何错误。
Fscan从r扫描文本,将成功读取的空白分隔的值保存进成功传递给本函数的参数。换行视为空白。返回成功扫描的条目个数和遇到的任何错误。如果读取的条目比提供的参数少,会返回一个错误报告原因。

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