sscanf如果遇到中间是空字符的情况会怎么样?

sscanf如果遇到中间是空字符的情况会怎么样?

如:

int a,b,c;
sscanf("123,456,78","%d,%d,%d",&a,&b,&c);
printf("a=%d b=%d c=%d ",a,b,c);

输出a=123 b=456 c=78

那如果是中间有空字段的情况会有问题么?

int a,b,c;
sscanf("123,,78","%d,%d,%d",&a,&b,&c);
printf("a=%d b=%d c=%d ",a,b,c);

会输出a=123 b=0 c=78 么?
我测试会有问题,感觉运行不正常。
那如果是这样的sscanf 的输入字符串中某个字段真的为空怎么办?
像GPS 数据 中经常有空的情况如:$GNRMC,060145.00,A,3422.64515,N,10892.61585,E,5.537,279.38,240323,,,A,V0E或
$GNRMC,,V,,,,,,,,,,N,V
37
难道没有定位的时候用sscanf提前有效数据就会出错么?
想用sscanf解析GPS 数据

这种数据用python处理会非常简单
要用c处理是很麻烦的

不行,会出问题的。你先自己补齐一下吧,如果有连续两个逗号,那就插入一个0
如果用字符串类的话,可以用replace函数,将",,",替换为", ,"。如果没有,就自己遍历一下字符串处理一下

用strtok()函数,以','逗号作为分隔符进行分解提取。

sscanf遇到格式错误的字符串是会出问题的,这是个不太安全的函数,所以使用前务必确认格式正确。

看来结论是不能使用sscanf函数来直接解析GPS数据的,因为gps 数据格式不确定,经常里面有,,,,中间为空的情况。感谢各位!!