C語(yǔ)言中多樣式的格式控制符的使用詳解
C語(yǔ)言中的格式控制符類型繁多,雖然格式字符可能就那么幾個(gè),但組合起來使得格式控制符變得多樣化,這對(duì)于C語(yǔ)言初學(xué)者來說無疑是一種痛苦,為此我將常見的格式控制符類型及意義總結(jié)一下,這些格式符的用法不需要你立即全部掌握,應(yīng)當(dāng)在日后的編程實(shí)踐中逐步掌握。
先來看一個(gè)代碼示例:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main(void) { int i; int temp=1234; int arr[5] = { 34,45,-67,89,-68 }; printf("%#o\n", temp); printf("%lo\n", temp); for (i = 0; i < 5; i++) printf("%d", arr[i]); printf("\n"); for (i = 0; i < 5; i++) printf("%-5d", arr[i]); printf("\n"); for (i = 0; i < 5; i++) printf("%+4d", arr[i]); printf("\n"); return 0; }
代碼運(yùn)行結(jié)果如下:
從上面代碼示例中可以看到,printf函數(shù)中的格式字符串有多種不同的組合,不同的組合輸出內(nèi)容也不盡相同,它一般是以%開頭的字符串,在%后面跟有各種樣式的格式字符,以說明輸出數(shù)據(jù)的類型、形式、長(zhǎng)度、小數(shù)位數(shù)等,其 一般形式如下:
%[標(biāo)志] [輸出最小寬度] [.精度] [長(zhǎng)度]
其中[]中表示可選項(xiàng)。各項(xiàng)意義介紹如下:
1.標(biāo)志:標(biāo)志字符有-、+、#、空格等四種,其所代表的意義如下:
- -: 當(dāng)實(shí)際位數(shù)小于指定位數(shù)時(shí),數(shù)據(jù)在指定寬度內(nèi)左對(duì)齊;多余位數(shù)以空格填充。
- +: 用于在正數(shù)之前添加"+",在負(fù)數(shù)之前添加"-"。
-和+的代碼示例如下:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main(void) { int i; int temp = 1234; int arr[3] = { 23,45,68 }; printf("%d\n", temp); printf("%+d\n", temp); for (i = 0;i < 3; i++) printf("%3d", arr[i]); printf("\n"); for (i = 0;i < 3; i++) printf("%-3d", arr[i]); return 0; }
運(yùn)行結(jié)果如下:
#: 對(duì)o類,輸出時(shí)添加前綴o;對(duì)x類,在輸出時(shí)添加前綴0x;對(duì)e,g,f類,當(dāng)結(jié)果有小數(shù)時(shí)才給出小數(shù)點(diǎn),對(duì)c、s、d、u類無影響。
#的代碼示例如下:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main(void) { int temp1 = 1234; float temp2 = 3.5; printf("%#d\n", temp1); printf("%#o\n", temp1); printf("%#x\n", temp1); printf("%#f\n", temp2); return 0; }
運(yùn)行結(jié)果如下:
2.輸出最小寬度:用十進(jìn)制整數(shù)來表示輸出的最少位數(shù)。若實(shí)際位數(shù)多于定義的長(zhǎng)度,則按實(shí)際位數(shù)輸出,若實(shí)際位數(shù)少于定義的寬度則補(bǔ)以空格或0。
3.精度:精度格式符以‘ . ’開頭,后跟十進(jìn)制數(shù)。它的含義是:如果輸出實(shí)數(shù),則表示小數(shù)的位數(shù);如果輸出的是字符串,則表示輸出字符的個(gè)數(shù);如果實(shí)際位數(shù)大于所定義的精度數(shù),則截去超過的部分(四舍五入)。
4.長(zhǎng)度:長(zhǎng)度格式有h和l兩種,h表示按短整型輸出,l表示按長(zhǎng)整型輸出。
敘述了這么多理論知識(shí),相信大家已經(jīng)對(duì)格式字符的多種組合已經(jīng)有了一個(gè)了解,為了讓大家對(duì)其有一個(gè)更加深入的了解,特舉一些常用的格式符使用示例如下:
⑴%m.nd: m、n均為正整數(shù),其中m指定輸出結(jié)果的總位數(shù),n指定實(shí)際輸出的整數(shù)位數(shù)。
注意:若整數(shù)的實(shí)際位數(shù)小于n,則用字符0填充;若實(shí)際位數(shù)大于n,則n不起作用。
代碼示例如下:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main(void) { int a = 123; int b = -1234; printf("%d\n", a); printf("%.4d\n", a); printf("%5.2d\n", a); printf("%.4d\n", b); printf("%8.6d\n", b); return 0; }
運(yùn)行結(jié)果如下:
⑵%m.ns: m、n均為正整數(shù)。其中m指定輸出結(jié)果的總位數(shù),n指定實(shí)際輸出結(jié)果的字符個(gè)數(shù)(從字符串左端截取)。
代碼示例如下:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main(void) { printf("%.3s\n", "good"); printf("%.4s\n", "good"); printf("%10.4s\n", "good"); printf("%.8d\n", "good"); return 0; }
運(yùn)行結(jié)果如下:
雖然格式控制符組合繁多,但并不需要死記硬背,只需在一定代碼訓(xùn)練后掌握其含義即可。
到此這篇關(guān)于C語(yǔ)言中多樣式的格式控制符的使用詳解的文章就介紹到這了,更多相關(guān)C語(yǔ)言格式控制符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++實(shí)現(xiàn)單鏈表刪除倒數(shù)第k個(gè)節(jié)點(diǎn)的方法
這篇文章主要介紹了C++實(shí)現(xiàn)單鏈表刪除倒數(shù)第k個(gè)節(jié)點(diǎn)的方法,結(jié)合實(shí)例形式分析了C++單鏈表的定義、遍歷及刪除相關(guān)操作技巧,需要的朋友可以參考下2017-05-05Qt實(shí)現(xiàn)指針式時(shí)鐘 Qt實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘
這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)指針式時(shí)鐘,Qt實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘,兩者相互切換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07C語(yǔ)言中數(shù)據(jù)如何存儲(chǔ)進(jìn)內(nèi)存揭秘
使用編程語(yǔ)言進(jìn)行編程時(shí),需要用到各種變量來存儲(chǔ)各種信息。變量保留的是它所存儲(chǔ)的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個(gè)變量時(shí),就會(huì)在內(nèi)存中保留一些空間。您可能需要存儲(chǔ)各種數(shù)據(jù)類型的信息,操作系統(tǒng)會(huì)根據(jù)變量的數(shù)據(jù)類型,來分配內(nèi)存和決定在保留內(nèi)存中存儲(chǔ)什么2022-08-08C語(yǔ)言中g(shù)etchar和putchar的使用方法詳解
我們知道scanf函數(shù)可以從鍵盤輸入信息,而printf則可以輸出信息,同樣地,getchar和putchar也有同樣的功能,下面我來給大家介紹putchar和getchar的使用方法,需要的朋友可以參考下2023-08-08復(fù)數(shù)乘法中的結(jié)構(gòu)體賦值實(shí)現(xiàn)代碼
復(fù)數(shù)乘法中的結(jié)構(gòu)體賦值實(shí)現(xiàn)代碼。需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-10-10C語(yǔ)言對(duì)磁盤文件進(jìn)行快速排序簡(jiǎn)單實(shí)例
這篇文章主要介紹了C語(yǔ)言對(duì)磁盤文件進(jìn)行快速排序簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-06-06