【发布时间】:2020-03-25 21:20:50
【问题描述】:
我正在尝试跳过字符串并解析两个值,如下面的代码所示:
int main()
{
char format[] = "%*s HEX_DATA:%04x, NEGATIVE_VAL:%d";
char str[] = "text_to_be_skipped, HEX_DATA:d800, NEGATIVE_VAL:-20";
uint16_t hex_data = 0;
int8_t neg_val = 0;
int status = sscanf(str, format, &hex_data, &neg_val);
printf("Status: %d, HEX_DATA: %04x, NEGATIVE_VAL: %d", status, hex_data, neg_val);
return 0;
}
它返回以下输出:
Status: 2, HEX_DATA: ffff, NEGATIVE_VAL: -20
十六进制值错误。当format[]中的,被删除后,输出如下:
Status: 1, HEX_DATA: d800, NEGATIVE_VAL: 0
现在 hex_data 值已正确解析,但 neg_val 未解析。如何全部解析?
【问题讨论】: