sscanf(input_str, "%5s", buf); //reads at max 5 characters from input_str to buf
但我需要使用類似%MACRO_SIZEs代替%5S如何在sscanf中傳遞可變長度寬度說明符?
一個平凡的解決方案是創建一個格式字符串爲同一
char fmt_str[100] = "";
snprintf(fmt_str, 100, "%%%ds", MACRO_SIZE);
sscanf(input_str, fmt_str, buf);
有沒有更好的方法來達到同樣的?
約束不是那麼多,MACRO_SIZE評估爲一個常量,但它的定義是一個簡單的文字,對嗎?例如,定義(5 * 25 + 3)(在編譯時計算常量)會導致`snprintf(fmt_str,100,「%」(5 * 25 + 3)「s」,buf) – jhfrontz 2015-11-04 17:44:17