[心得] printf的一些用法

看板C_and_CPP (C/C++)作者 (喔喔)時間16年前 (2009/06/23 22:34), 編輯推噓3(300)
留言3則, 3人參與, 最新討論串1/1
下面一點點小技巧是我在寫完一堆畫星星作業之後湊出來的。 雖然有些技巧沒什麼用,還是跟大家分享一下。 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

06/23 22:39, , 1F
"%+5d" 這個以前都不知道
06/23 22:39, 1F

06/24 03:14, , 2F
推阿~
06/24 03:14, 2F

06/24 08:28, , 3F
06/24 08:28, 3F
文章代碼(AID): #1AGEVvfL (C_and_CPP)
文章代碼(AID): #1AGEVvfL (C_and_CPP)