我正在寫一個函數,它需要一個可變參數列表並從這些列表中生成一個格式化的字符串。問題是,我用sprintf創建的字符串,我需要明確地列出所有PARAMATERS,而編程使用一個指針sprintf可變參數
sprintf(string, format, a0, a1, a2, ...);
在cppreference不過的sprintf的描述說,那......
。 ..(附加參數) 根據格式字符串的不同,函數可能需要一系列附加參數,每個參數都包含一個值,用於替換格式字符串中的格式說明符(或指向存儲的指針 位置,對於n)。
我的理解是,我可以將所有數據存儲到指針位置,並將指針指向sprintf。
int arr[X];
arr[0] = a0;
...
sprintf(string, format, &arr);
試圖導致意外的行爲。只有數字被寫入字符串。
它實際上是這樣工作,有沒有更好的解決方案?
我的第一次嘗試是將每個可變參數分別添加到字符串中,但是這產生了很多對sprintf的調用,我想要避免的。
是否可以將可變參數列表從一個函數傳遞給另一個函數?
未進行具體的解決方案,但你簽出參數包? – Malachi
在沒有C++ 11的情況下在微控制器上工作,但是感謝你的想法,我其實沒有檢查出參數包 – Aeonos
正確。另一個半邊注,我做了一點點的微控制器開發和C++ 11 *通常是可用的。你確定它不適合你嗎? – Malachi