標準C語言庫函式fprintf/printf格式字串的轉換說明形式是這樣的:
%[標誌][最小輸出寬度][.精度][長度修正符]型別
方括號括起來是可選項。
標誌是0或多個標誌字元,可以是任意順序,常用有以下幾個:
- 左對齊,預設是右對齊。
+ 帶符號的值前面總是有個符號,也就是正數前面有+號,負數前面有-號。
0 輸出值的寬度小於最小寬度的話,用0填充,預設是用空格填充。
最小輸出寬度就是你說的那個m,這個必須是10進位制整數常量,開頭不能是0,不然變成上面的0標誌了。如果輸出的值小於這個寬度,根據上面的對齊標誌決定左對齊還是右對齊,剩下的用填充字元填充,預設是空格,用0標誌指定的話是0。
精度一般是小數點後面跟1個十進位制數,對於整型,表示要輸出的最少位數,不足的話前面會補0,對於小數,表示小數點後面輸出幾位小數。
長度修正符修正後面型別的輸出長度。l表示long或unsigned long,ll表示long long int或unsigned long long int,h表示short或unsigned short,hh表示為char或unsigned char,L表示long double。
最後的型別就是常見的d,o,x,f,c,s一類的,這個意思就不用說了吧。
最小輸出寬度和長度修飾符是不衝突的,所以要輸出長整型又要指定輸出欄位寬度,必須兩個都指定。
%8ld,%8lo,%8lx這樣都可以。
而%mlo,%mlx是錯誤的的轉換說明,因為最小輸出寬度必須是數字,寫成m根本就不會輸出。
上面的選項都還有一些不常用的,具體可以參考C語言標準。
標準C語言庫函式fprintf/printf格式字串的轉換說明形式是這樣的:
%[標誌][最小輸出寬度][.精度][長度修正符]型別
方括號括起來是可選項。
標誌是0或多個標誌字元,可以是任意順序,常用有以下幾個:
- 左對齊,預設是右對齊。
+ 帶符號的值前面總是有個符號,也就是正數前面有+號,負數前面有-號。
0 輸出值的寬度小於最小寬度的話,用0填充,預設是用空格填充。
最小輸出寬度就是你說的那個m,這個必須是10進位制整數常量,開頭不能是0,不然變成上面的0標誌了。如果輸出的值小於這個寬度,根據上面的對齊標誌決定左對齊還是右對齊,剩下的用填充字元填充,預設是空格,用0標誌指定的話是0。
精度一般是小數點後面跟1個十進位制數,對於整型,表示要輸出的最少位數,不足的話前面會補0,對於小數,表示小數點後面輸出幾位小數。
長度修正符修正後面型別的輸出長度。l表示long或unsigned long,ll表示long long int或unsigned long long int,h表示short或unsigned short,hh表示為char或unsigned char,L表示long double。
最後的型別就是常見的d,o,x,f,c,s一類的,這個意思就不用說了吧。
最小輸出寬度和長度修飾符是不衝突的,所以要輸出長整型又要指定輸出欄位寬度,必須兩個都指定。
%8ld,%8lo,%8lx這樣都可以。
而%mlo,%mlx是錯誤的的轉換說明,因為最小輸出寬度必須是數字,寫成m根本就不會輸出。
上面的選項都還有一些不常用的,具體可以參考C語言標準。