使用sscanf时遇到了奇怪的行为。根据结构中a和b的顺序,其中一个得到0。
typedef struct MyStructure{
uint8_t a;
uint8_t b;
}MyStructure;
这里的代码让我感到困惑:
if (2 == sscanf(rawCommand,"%*s %*s %"SCNu8" %"SCNu8"", &a, &b)){
... some code
}
当我将结构体中变量的顺序更改为:
typedef struct MyStructure{
uint8_t b;
uint8_t a;
}MyStructure;
sscanf返回2但a为0;
我已经在Linux上的32位GCC上进行了测试,上面的代码在两个方面都有效。但是当在Windows 7上使用64位GCC进行编译时,它的行为就像我提到的那样。在两个系统上我都使用GCC 4.8.1。