为什么sscanf在这里表现奇怪?

时间:2015-10-08 18:28:12

标签: matlab scanf

我在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更改为0102也会返回我的预期。这是巧合,我实际上是在读错了这行还是有什么奇怪的事情发生在这里?

2 个答案:

答案 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并且它停止读取其余的字符串。