看板 C_and_CPP 關於我們 聯絡資訊
各位好, 像printf這類參數不定的function, 要如何用另一個參數不定的function來包呢? Ex: printf(const unsigned char *fmtstr, ...) 如果我要用類列下列的參數不定function來包printf()要如何完成呢? Ex: Func(const unsigned char *str, ???) { unsigned char buf[80]; sprintf(buf, str, ???); printf("%s Test\n", buf); } 需要有什麼特殊的方法嗎? 請各位多多賜教.. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.171.215.105 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1456647753.A.D21.html
LPH66: #include <stdarg> /* C header, C++ 用 <cstdarg> */ 02/28 16:24
LPH66: 然後用吃 va_list 參數的裡層函數接外層的不定參數 02/28 16:25
a1b2c3d4e5x: 搜尋可變參數或 va_list 之類的 02/28 16:26
LPH66: printf/scanf 系函式都有對應的 v 版, 函式前面加個 v 即是 02/28 16:26
LPH66: 例如 vsprintf, vscanf 等等 02/28 16:26
Caesar08: 如果是C++,可以參考Parameter pack或variadic template 02/28 16:28
謝謝樓上幾位的建議, 已解決.. 做法如下, #include <stdarg.h> Func(const unsigned char *str, ...) { unsigned char buf[80]; va_list arg; va_start(arg, str); vsprintf(buf, str, arg); va_end(arg); printf("%s Test\n", buf); } ※ 編輯: MaxHaru (118.171.215.105), 02/28/2016 16:54:23