C語(yǔ)言中多樣式的格式控制符的使用詳解
C語(yǔ)言中的格式控制符類型繁多,雖然格式字符可能就那么幾個(gè),但組合起來(lái)使得格式控制符變得多樣化,這對(duì)于C語(yǔ)言初學(xué)者來(lái)說(shuō)無(wú)疑是一種痛苦,為此我將常見(jiàn)的格式控制符類型及意義總結(jié)一下,這些格式符的用法不需要你立即全部掌握,應(yīng)當(dāng)在日后的編程實(shí)踐中逐步掌握。
先來(lái)看一個(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)容也不盡相同,它一般是以%開頭的字符串,在%后面跟有各種樣式的格式字符,以說(shuō)明輸出數(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類無(wú)影響。
#的代碼示例如下:
#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ù)來(lái)表示輸出的最少位數(shù)。若實(shí)際位數(shù)多于定義的長(zhǎng)度,則按實(shí)際位數(shù)輸出,若實(shí)際位數(shù)少于定義的寬度則補(bǔ)以空格或0。
3.精度:精度格式符以‘ . ’開頭,后跟十進(jìn)制數(shù)。它的含義是:如果輸出實(shí)數(shù),則表示小數(shù)的位數(shù);如果輸出的是字符串,則表示輸出字符的個(gè)數(shù);如果實(shí)際位數(shù)大于所定義的精度數(shù),則截去超過(guò)的部分(四舍五入)。
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語(yǔ)言二維數(shù)組應(yīng)用之井字棋游戲
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言二維數(shù)組應(yīng)用之井字棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
C++實(shí)現(xiàn)LeetCode(59.螺旋矩陣之二)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(59.螺旋矩陣之二),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
Qt5.9實(shí)現(xiàn)簡(jiǎn)單復(fù)合圖形
這篇文章主要為大家詳細(xì)介紹了Qt5.9實(shí)現(xiàn)簡(jiǎn)單復(fù)合圖形,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07
C++中實(shí)現(xiàn)子進(jìn)程執(zhí)行和管道通信詳解
在這篇博客中,我們將深入探索如何在 C++ 程序中實(shí)現(xiàn)子進(jìn)程的創(chuàng)建與執(zhí)行,以及父子進(jìn)程間的管道通信,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01
C語(yǔ)言實(shí)現(xiàn)外賣管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)外賣管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11
C++小練習(xí)之高性能實(shí)現(xiàn)字符串分割
字符串分割是日常工作中比較常見(jiàn)的基礎(chǔ)函數(shù),通常大家會(huì)使用現(xiàn)成的基礎(chǔ)庫(kù),基礎(chǔ)庫(kù)的性能是否是最佳的,本文主要和大家探討一下如何最大限度的提升字符串分割的性能,希望對(duì)大家有所幫助2023-10-10

