Я пытаюсь пропустить строку и проанализировать два значения, как в коде ниже:
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
не анализируется. Как разобрать их все?