与sscanf一起使用时,格式说明符%n不返回字符数

时间:2014-02-07 04:25:05

标签: c windows string-parsing scanf

我正在解析一个字符串(一个char *),我正在使用sscanf将字符串中的数字解析为双精度数,如下所示:

while(*s){
     if(sscanf(s, " %1[MmLl] %f %f %n ", command, &x, &y, &n) == 3){
        //Do some processing
        s += n;
     }
}

除少数情况外,这适用于大多数输入。问题在于count变量n。对于某些输入,变量n从不更新,并且它继续保持前一次迭代的计数。这会导致错误的偏移并弄乱解析。 对于失败的输入,我没有看到任何奇怪的东西。

注意:此问题仅在Windows中发生,因为相同的代码在linux中生成正确的输出。

有没有人遇到类似的问题?

1 个答案:

答案 0 :(得分:2)

摆脱%n之前和之后的空格。