Re: [問題] 不用sprintf的寫法

看板C_and_CPP (C/C++)作者 (藍影)時間15年前 (2011/01/17 01:14), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)

01/16 23:56,
不推薦寫不定參數的東西, 有夠危險, 你該想的是如何把
01/16 23:56

01/16 23:57,
流程分得更詳細, 會把數字轉成16進位字串了, 那取代字
01/16 23:57

01/16 23:57,
串該怎麼做? 需要多個整數傳指標進去不就好了?
01/16 23:57

↑ 我也推 l 大

01/17 00:07,
__VA_ARGS__, plz check "Variadic Macros"
01/17 00:07

01/17 00:09,
不定引數會危險... 通常是 user的問題, printf("%s",0);
01/17 00:09

01/17 00:10,
也是當給你看 不用太擔心~ 當機比未定狀態好了
01/17 00:10

01/17 00:19,
不定引數也沒有彈性, 更不用說語意明不明確了, 不是方
01/17 00:19

01/17 00:19,
便就好
01/17 00:19
-------------------------------------------------- Primer 4e 7.2.7 (p244) void foo(param_list, ...); 「此函式被呼叫時可能有零個或多個引數,且引數型別未知」 ------------------------------------------------------- 就小弟對於 va_list 淺薄研究, 所有終止進行運算大致上只有二種方式, 一種是如 Primer 所說,一開始就明確給參數數量, 不過要這麼做的話幹嘛還要用 va_list ? 塞 array 不就好了? 另一方法是設定終止值,數字的話可以最後給 0(例子常用-1) 當做結束, 提醒的是,va 系列是 macro,不是函式,下述連結可參考 http://ehome.hifly.to/showthread.php?s=&threadid=329 ---------------------------------------------------------- 另 loveme 所指出的 「危險」,其實並不只是有沒有基本 sence , 而是真的很危險,特別是在自動轉型的時候,(像是 double 引數傳入 int 參數) 以下程式碼可供參考,注意第四次呼叫副函式時結果會是錯的 http://nopaste.csie.org/0702b 可能我還感受不到它的好處,所以小弟也是覺得少用 va_list 之前用 va 寫的也全都改回來 -- YouLoveMe() ? LetItBe() : LetMeFree(); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.76.142

01/17 01:28, , 1F
Q口Q
01/17 01:28, 1F
文章代碼(AID): #1DCoTZMD (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1DCoTZMD (C_and_CPP)