sscanf(input_str, "%5s", buf); //reads at max 5 characters from input_str to buf
Aber ich brauche etwas wie% MACRO_SIZEs von% anstatt verwenden 5sWie Übergeben variabler Breite Spezifizierer in sscanf?
Eine triviale Lösung ist ein Format-String für die gleichen
char fmt_str[100] = "";
snprintf(fmt_str, 100, "%%%ds", MACRO_SIZE);
sscanf(input_str, fmt_str, buf);
zu schaffen Gibt es einen besseren Weg, um das gleiche zu erreichen ?
Die Einschränkung ist nicht so sehr, dass MACRO_SIZE als eine Konstante auswertet, aber dass seine Definition ein einfaches Literal ist, oder? Zum Beispiel ergibt eine Definition von (5 * 25 + 3) (die zur Kompilierzeit eine Konstante ergibt) 'snprintf (fmt_str, 100, "%" (5 * 25 + 3) "s", buf); – jhfrontz