Как я могу использовать один sscanf (или другой метод) для разделения выражения на различные компоненты.
Используйте "%n"
, чтобы записать ход сканирования.
char label_dat[10 + 1];
char var_name[20 + 1];
int var_val;
int n1 = 0;
int n2 = 0;
// v-------v----v---- Tolerate trailing whitespace
sscanf(s, "# %10s %n %20s , %d %n", label_dat, &n1, var_name, &var_val, &n2);
// If scanning made it to `n1` and there was no more text
if (n1 && s[n1] == '\0') {
printf("Label '%s'\n", label_dat);
// If scanning made it to `n2` and there was no more text
} else if (n2 && s[n2] == '\0') {
printf("Data '%s', Name '%s', Value %d\n", label_dat, var_name, var_val);
} else {
puts("Bad input");
}
Требуется больше кода, если после #
и ,
требуется пробел.