golang fmt.Fscanf()读取文件数据异常问题
今天看到朋友代码时,发现一个小问题,fmt.Fscanf()
读取数据老是不正常,总体,可以看出来是,多读了一个0
。这个现象有点问题。
Fscanf
的注释:
1 | // Fscanf scans text read from r, storing successive space-separated |
使用的代码是:
1 | func read1(filename string) [][]int { |
没有找到解释该现象的博客,golang fmt.Fscanf()遇到换行返回值为0,这里有看到同样是碰到这个问题的人。
1 | Scan,Fscan,Sscan treat newlines in the input as spaces. |
但我并不喜欢这种操作方式,虽然管用,可这样的话,就得将数据格式化一遍,然后才能读,感觉麻烦了些。
遇到换行会读取多一个0
,这很奇怪,但这里我很巧合的联想到了文件格式是否是造成此问题的原因,因为CRLF和LF,分别是两种换行符,属于不同的操作系统,一个是\r\n
,一个是\n
,刚好会多出一个符号。
果然,在更改文件格式后,结果正常,看来就是文件格式的问题了,需要将文件格式修改为LF
,这里Fscanf
默认换行符看来识别的是\n
,在其注释中的输入中的换行符必须与format中的换行符匹配
,看来就是留下的一个引子,怎么修改识别这个换行符标志,我就没有深入研究了,如果有后续可以跟我留言,告诉我详情。
本文标题:golang fmt.Fscanf()读取文件数据异常问题
文章作者:小师
发布时间:2020-11-17
最后更新:2022-05-04
原始链接:chunlife.top/2020/11/17/golang-fmt-Fscanf-读取文件数据异常问题/
版权声明:本站所有文章均采用知识共享署名4.0国际许可协议进行许可