1. 程式人生 > >C語言格式控制符

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:用於輸出整型數(整型指本質為整型的數,如intshortchar等)

%c:用於輸出一個字元

%s:用於輸出一個字串

%o:以無符號八進位制形式輸出整數值

%x:以無符號十六進位制形式輸出整數值

%u:以無符號形式輸出十進位制數

%f:用來輸出浮點數(float),精度為6位小數,第七位四捨五入。

%p:指標的值

1.2佔位長度與格式控制符搭配輸出

1.2.1 佔位長度與%d搭配

%mdm為指定的輸出資料的位寬。如果資料的位數小於m,則左端補以空格(因為預設右對齊,所以左補用以佔位);如果資料的位數大於m,則以資料的實際位數輸出。示例如下:


1.2.2 佔位長度與%c搭配

一般無此搭配方式。

1.2.3 佔位長度與%s搭配

%msm為指定的輸出字串的寬度。如果字串的位數小於m,則左端補空格;如果字串的位數大於m,則以實際的字串長度輸出。例項如下:


%m.ns:意為從左向右擷取字串的

n位輸出到佔位m的位置,左補空。設字串實際長度為len,則具體表現形式如下:

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.nfm為佔位寬度,n為小數點右邊的位數,浮點數的規則較字串比起來更為複雜些,你不但要關注浮點數的總佔位寬,還要關注小數的佔位寬。小數部分的精度為lenDot,下面分整數位數與小數位數簡要分析下:

1.2.4.1小數部分:

由於浮點數float的精度為6(即lenDot=6)。算小數部分原則:

1)首先根據浮點數的實際精度得出近似值,原則為:

若浮點數的實際小數位長大於6,則擷取6位,第七位四捨五入;若浮點數的實際小數位數小於6,則後補0。如1.23轉換成1.2300001.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語言學習著佔據著舉足輕重的作用,基本上我們每天的程式設計都會與它打交道。所以這部分內容值得細細體會、多上機實踐。養成善於總結、記筆記的習慣,相信學好它們不在話下。

3.參考文章