2010-02-08 211 views
5

雖然我在工作,但在代碼內部的某處我看到了以下的步驟。 我對格式說明在sprintfC格式說明符

d_number = strtol(tmp_buf , (char **)NULL, 16); 
    memset(tmp_buf , ' ' , sizeof(tmp_buf)); 
    sprintf(tmp_buf , "%0.*d" , (int)sizeof(dec_number) , d_number ); 

感到困惑可能有人解釋一下嗎?

+1

@qrdl:那有什麼用呢?您可能錯過了備忘錄,但是SO從未打算成爲Google的簡單鏈接。它旨在包含大大小小的編程問題的答案。如果你沒有什麼有用的貢獻,不要麻煩評論。 – jalf

+2

@jalf第一次打印是關於printf的維基百科文章,它列出了所有格式說明符和寬度參數。我希望這能回答你對我的評論有幫助的問題。我堅信,尋找信息的能力是優秀程序員最強大的素質之一(與任何工程師一樣),所以我更喜歡釣魚竿,而不是魚。我爲成爲程序員而自豪,不喜歡那些貶低我的手藝的人。是的,請確保我收到另一份備忘錄,Lumbergh先生。 – qrdl

+0

@qdrl:確實如此。您的評論沒有幫助。所提出的目標之一就是提供答案*而不告訴別人谷歌它。但是告訴我,如果人們進入到stackoverflow.com並輸入「printf格式說明符」,爲什麼它會「降低你的工藝」,但如果他們轉到谷歌或維基百科並且執行*完全相同的事情,那麼它是否值得和完全不同?我想說一個好程序員的標誌是去一個相關的網站去尋找信息。對於編程問題,SO比維基百科更具有相關性,不是嗎? – jalf

回答

0

中的*是由(int)取代的sizeof(dec_number)。如果dec_number是一個int,則在許多機器上它與%0.4d相同。這是用於打印整數或要打印的最大位數的精度

的*可以出現在的兩邊,例如 「」:

sprintf(tmp_buf, "%*.*", 0, (int)sizeof(dec_number), d_number); 

也適用。