C語言格式控制符
顧名思義,格式控制符就是對識別符號或表示式的格式進行控制,它決定了識別符號或表示式的輸出形式(長度、對齊方式、小數位數等),它也是C語言中非常重要的一個概念。本人實際工作中雖然經常用到格式控制符,但用的最多的無非是%d、%c、%s這些,但是在本篇中我將盡可能全面的介紹格式控制符,這其中必然會涉及到好多我沒用到的識別符號,當然我會盡量在程式中加以驗證,同時如有不足之處望不吝賜教,拜謝。
1.格式控制符形式
% [{+,-}] [o] [{m,m.n}] [{l,h}] <格式控制符>
其中,中括號[]裡的內容是可選的,<>裡的內容是必須的。以下對各個標誌的含義簡要介紹:
%:表示格式控制的起始符號,必不可少。--格式控制起始位置
+/-:表示對齊標誌,+表示右對齊,-表示左對其,預設情況下為右對齊。--對齊標誌
o:表示當實際長度沒有格式控制的長度大時,用“o”補全。--補全內容
m/m.n:其中,m表示輸出所佔位寬,n表示實際取識別符號的多少位輸出--佔位長度
l/h:l對整型指long型,對實型指double型;h用於將整型字元修正為short型
<>:格式控制符
1.1格式控制符
%d:用於輸出整型數(整型指本質為整型的數,如int、short、char等)
%c:用於輸出一個字元
%s:用於輸出一個字串
%o:以無符號八進位制形式輸出整數值
%x:以無符號十六進位制形式輸出整數值
%u:以無符號形式輸出十進位制數
%f:用來輸出浮點數(float),精度為6位小數,第七位四捨五入。
%p:指標的值
1.2佔位長度與格式控制符搭配輸出
1.2.1 佔位長度與%d搭配
%md:m為指定的輸出資料的位寬。如果資料的位數小於m,則左端補以空格(因為預設右對齊,所以左補用以佔位);如果資料的位數大於m,則以資料的實際位數輸出。示例如下:
1.2.2 佔位長度與%c搭配
一般無此搭配方式。
1.2.3 佔位長度與%s搭配
%ms:m為指定的輸出字串的寬度。如果字串的位數小於m,則左端補空格;如果字串的位數大於m,則以實際的字串長度輸出。例項如下:
%m.ns:意為從左向右擷取字串的
1.若n<len
擷取字串前n個字元,然後做如下判斷:
若m<n:則輸出n個字元
若m>n:則輸出m個字元,左補空
2.若n>len
取字串的實際(長度len)字元,然後做如下判斷:
若m<len:則輸出len個字元
若m>len:則輸出m個字元,左補空格
1.2.4 佔位長度與%f搭配
%m.nf:m為佔位寬度,n為小數點右邊的位數,浮點數的規則較字串比起來更為複雜些,你不但要關注浮點數的總佔位寬,還要關注小數的佔位寬。小數部分的精度為lenDot,下面分整數位數與小數位數簡要分析下:
1.2.4.1小數部分:
由於浮點數float的精度為6(即lenDot=6)。算小數部分原則:
(1)首先根據浮點數的實際精度得出近似值,原則為:
若浮點數的實際小數位長大於6,則擷取6位,第七位四捨五入;若浮點數的實際小數位數小於6,則後補0。如1.23轉換成1.230000;1.23456789轉換成1.234568
(2)根據上步中的結果值,從中擷取n位長。注意:n一般小於或等於6,因為超過6位的資料不真實。
1.2.4.2整數部分:
整數部分完整輸出,唯一要注意的是:
當m>(整數位寬+小數點位寬+n)時,左補空。
1.2.4.3示例如下:
1.2.4.4建議
一般不對浮點數float輸出大於6位的小數,因為大於6位後的資料已經在浮點精度之外了,是不正確的資料。
1.3補全內容與佔位長度、控制符的搭配輸出
當識別符號的佔位長度大於實際的長度時,在多出的位置處用補全內容填充。補全內容預設為空,可以顯式指定補全內容為0。例項如下:
1.4對齊標誌
對齊標誌有兩種:+和-,其中預設為+。+表示右對齊,-表示左對齊。對齊標誌要相對簡單、更好理解,所以不細講,直接舉例驗證,如下:
左對齊:
右對齊:
2.總結
格式控制符直接影響著程式輸出的外觀,所以在C語言學習著佔據著舉足輕重的作用,基本上我們每天的程式設計都會與它打交道。所以這部分內容值得細細體會、多上機實踐。養成善於總結、記筆記的習慣,相信學好它們不在話下。