看板 C_and_CPP 關於我們 聯絡資訊
下面一點點小技巧是我在寫完一堆畫星星作業之後湊出來的。 雖然有些技巧沒什麼用,還是跟大家分享一下。 printf( "%-5d", n ); // 向左對齊 預設是向右對齊 printf( "%+5d", n ); // 如果n是正數,就會加上+,如果是負數,就加上- printf( "%05d", n ); // 開頭用0來補齊,大數運算的時候會用到 我覺得最有用的是* ,可以讓印出字串的欄位寬度可變 假設要印出 k 個 0,用printf的技巧可以用一個敘述就完成 printf( "%0*d", k, 0 ); 同理 printf( "%*s", k, "" ); 可以用一行指令就印出k個空白,排版的時候很方便,不用多寫一個迴圈。 有了 * 的主要好處是可以更動態的排版。 如果是要印出連續k個*,我都是用一個夠長且其中每個字元都是*的字串來輔助。 puts( "**********" + 10 - k ); 而sprintf的好處就是可以把一個整數轉換成一個字串(C語言沒有itoa的函式) sprintf( result, "%d", n ); 還可以拿來計算一個數字的位數 (10進位, 8進位, 16進位都可以) sprintf( temp, "%d%n", number, &digits ); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.119.162.51
bobhsiao:"%+5d" 這個以前都不知道 06/23 22:39
tiyun:推阿~ 06/24 03:14
sunkill:推 06/24 08:28