sscanf(input_str, "%5s", buf); //reads at max 5 characters from input_str to buf
ma ho bisogno di usare qualcosa come% MACRO_SIZEs invece di% 5sCome passare lo specificatore della larghezza della lunghezza variabile in sscanf?
Una soluzione banale è quella di creare una stringa di formato per lo stesso
char fmt_str[100] = "";
snprintf(fmt_str, 100, "%%%ds", MACRO_SIZE);
sscanf(input_str, fmt_str, buf);
C'è un modo migliore per ottenere lo stesso ?
Il vincolo non è tanto che MACRO_SIZE valuta come costante, ma che la sua definizione è un semplice letterale, giusto? Ad esempio, una definizione di (5 * 25 + 3) (che valuta una costante al momento della compilazione) risulta in 'snprintf (fmt_str, 100,"% "(5 * 25 + 3)" s ", buf);' – jhfrontz