[問題] 不用sprintf的寫法

看板C_and_CPP作者 (東逼)時間15年前 (2011/01/16 14:39), 編輯推噓3(3011)
留言14則, 5人參與, 最新討論串1/2 (看更多)
大家好 最近在練習C語言的時候遇到一個問題 關於sprintf的用法 我知道 sprintf(str,"abc%xdef",123); 的意思是把123這個數字轉乘16進位後填到字串abc%xdef後 再把這整串字串填到str裡面 所以最後的str為"abc7Bdef" 今天的問題是假如不用 sprintf 以及 %x 這個函數 要怎麼達成跟sprintf一樣的效果? @@ 在此假設輸出格式只有16進位的情況而已 我自己的想法是 寫一個函數型式為 char *test(char* str1,char* str2,int num); 在這個函數中 我先把num轉成16進位 再把str2中有%x的地方給取代掉 但是我有個問題 就是如果今天引數不只一個 ex: test(str,abc%xdef%x,123,456) 那函數的原型要怎麼定義?@@ 我知道main可以用 int main(int argc,char* argv[]) 那自己定義的函數也可以用這樣的方式嗎?@@ 現在主要是卡在不知道引數個數的情況下函數要怎麼定義 Orz 所以就來請教大家了 @@" 在此就先謝謝大家的回覆囉~~~~ -- ▍ ▍ ╯╰ ╯╰ ◢◣ ◢◣ 我最愛的 柏柏龍~ 柏柏龍~ ◢██◣ ╮╭ ▎▎╮╭ ▎▎ 柏柏龍~ 柏柏龍~ ⊙ ⊙ ⊙ ⊙ 人人心中都有柏柏龍~ ≡ ▼ ≡ ▲▲ ● ● ≡ ▼ ≡ ■ ■ ■ ■ 憤怒就永遠不會消失~ ⊙⊙ ≡皿 ≡ 炸是最美的擁有~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.167.20.65

01/16 14:54, , 1F
01/16 14:54, 1F

01/16 14:54, , 2F
不定參數..va_arg, va_end, va_start???
01/16 14:54, 2F

01/16 15:25, , 3F
這好像我以前計概寫過的作業,自己寫一個printf之類的...
01/16 15:25, 3F

01/16 15:26, , 4F
結論就是....請參考sprintf的source code (誤)
01/16 15:26, 4F

01/16 15:28, , 5F
隨便找都有版本 "A tiny printf"..
01/16 15:28, 5F

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

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

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

01/16 23:57, , 9F

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

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

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

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

01/17 00:19, , 14F
便就好
01/17 00:19, 14F
文章代碼(AID): #1DCfAA7e (C_and_CPP)
文章代碼(AID): #1DCfAA7e (C_and_CPP)