回覆列表
  • 1 # 滴逃逃

    標準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語言標準。

  • 中秋節和大豐收的關聯?
  • 梅花這首詩表達了詩人怎樣的情懷?