1. 程式人生 > >關於C中printf()輸出函式的佔位符(格式制定符)的字元寬設定

關於C中printf()輸出函式的佔位符(格式制定符)的字元寬設定

很多人應該知道stdio.h標頭檔案裡面的printf()函式 第一個引數是輸出字串 後面的引數是代替字串中所出現的佔位符的值

我相信下面這個用法肯定大部分人都知道 %.3f輸出浮點數的小數部分的三位

printf("%.3f", 0.12345); //輸出0.123

但是對於字寬 三某人一直沒搞懂 一直以為字元寬設定是限制了可輸出的最大字元寬 直到三某人看了K&R 首先看整數

printf("%3d", 12); //輸出 12(注意在12前面有一個空格)

這個%3d是輸出一個至少佔3個字元寬的十進位制數 並且輸出的值在右側

 而不是左側 所以空格出現在了左側

需要注意的是 字元寬的設定並沒有限制最大字元寬 例如

printf("%3d", 12345); //輸出12345

可以發現如果後面的數值如果超過了3個字元寬 這裡的%3d和%d輸出就沒有區別了 也就是說只是限制了最低字元寬 而不是固定為設定的字元寬

然後是當字元寬限制和浮點數小數位限制一起使用的時候 例如

printf("%6.2f", 12.12345); //輸出 12.12

我當初看到這個結果還有點納悶 為啥是一個空格四個數碼 然後掃了一眼中間的

小數點

也就是說字元寬的限制是包含了浮點數的小數點的 浮點數的小數部分被嚴格按照設定被限制了 需要額外注意的就是這個小數點

 

PS.關於佔位符這個說法 叫法還真的多 有的地方叫格式指定符 還有叫格式控制符的 我最早看的書稱這玩意叫轉換指定符(一個譯本) 反正叫法不一 這裡用了佔位符的說法

關於更多佔位符怎麼使用不在本次討論範圍內 知道最常用的%d十進位制 %f浮點數 其他的各位自己查表吧233

 

參考資料:K&R C語言程式設計第二版