sscanf(input_str, "%5s", buf); //reads at max 5 characters from input_str to buf
Но мне нужно использовать что-то вроде% MACRO_SIZE вместо% 5s
Тривиальное решение состоит в том, чтобы создать строку формата для того же
char fmt_str[100] = "";
snprintf(fmt_str, 100, "%%%ds", MACRO_SIZE);
sscanf(input_str, fmt_str, buf);
Есть ли лучший способ добиться того же?