我在sscanf
中使用Matlab
,除非使用特定的字符组合,否则它会正常工作:
sscanf('2015.10.07-00:07:01', '%i.%i.%i-%i:%i:%i')
返回数组
ans =
2015
10
7
0
7
1
但是
sscanf('2015.10.07-00:08:01', '%i.%i.%i-%i:%i:%i')
返回
ans =
2015
10
7
0
0
请注意,将07
和/或08
更改为01
到02
也会返回我的预期。这是巧合,我实际上是在读错了这行还是有什么奇怪的事情发生在这里?
答案 0 :(得分:3)
根据the documentation,它似乎被视为十六进制。我需要使用%d
而不是%i
强制进行基数10解释。
答案 1 :(得分:0)
我试试这个
sscanf('2015.10.08-00:07:01', '%i.%i.%i-%i:%i:%i')
返回
2015
10
0
根据sscanf上的文档,它被读作基数8(00-07),因为初始值为0.我认为这会导致错误,因为08读入为0并且它停止读取其余的字符串。