2013-11-21 52 views
-1

我有一個變量如何通過上char變量參數,並打印

char buffer[250] = "Your score is %d"; 

,我想打印它像

printf("%s", buffer); 

而且通過第二個參數,所以我可以像顯示它"Your score is 50"

這可能嗎?

+2

嘗試使用'sprintf' –

+2

只有一個格式字符串,這是第一個參數。它之後的參數永遠不會用作格式化字符串,這意味着除了第一個字符串之外,不能在任何其他參數中使用'%d'。 –

+0

喜歡降價 – fxuser

回答

4

可以打印字符串本身,就像這樣:

printf(buffer , 50) ; 
+0

這是非常不安全的,因爲你可以用緩衝區中的用戶輸入操作程序存儲器 – nio

+0

@nio什麼是用戶輸入? – this

+0

它取決於什麼可以在緩衝區中作爲格式字符串登陸,如果它只是一個數字格式字符串,則不會發生任何事情,但如果您在緩衝區中有一個字符串,則會輸入錯誤的輸入,如'「%s%s%s%s」'如果沒有提供足夠的格式參數,可能會導致您的代碼行崩潰。對於安全問題谷歌了https://www.google.com/#q=format+string+vulnerability – nio