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

我正在解析一个字符串(一个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中生成正确的输出.

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

最佳答案 摆脱%n之前和之后的空格.

点赞