Я не знаю, как заставить это работать, если команда определена как: char
команда; или команда char *.
Вы всегда должны убедиться, что sscanf
передан адрес символа , в котором вы хотите сохранить значение. (Первоначально вы передали command
, который является именем массива char
, что эквивалентно адресу первого члена в массиве (единственный член, так как «вы» объявили размер массива 1.))
В первом случае ваш код почти верен как есть.
char command;
int count = sscanf(rc, "%c,%d,%d,%d", &command, &data1, &data2, &data3);
Второй случай сложнее. Адрес символа легко передать, потому что command
будет именно таким типом. Но на что указывает указатель? Вам нужно инициализировать его значение так, чтобы оно указывало на char
, в которое вы можете записать.
char comm_value = '?';
char* command = &comm_value;
int count = sscanf(rc, "%c,%d,%d,%d", command, &data1, &data2, &data3);