C语言格式控制符和转义字符
1.???????? 格式控制符
格式輸出printf 作用是向終端輸出若干個(gè)類(lèi)型任意的數(shù)據(jù)。
格式:printf (格式控制符,輸出列表)
1)???????? 格式控制符
l????????? % 格式說(shuō)明引導(dǎo)符。
l????????? - 指定左對(duì)齊輸出。
l????????? 0 指定空位填零。
l????????? m.n? 指定輸出域?qū)挾燃熬?
m表示數(shù)據(jù)最小寬度,如果實(shí)際數(shù)據(jù)寬度>m,按實(shí)際數(shù)據(jù)寬度輸出,如果實(shí)際數(shù)據(jù)寬度<m,左邊補(bǔ)空格。n對(duì)于實(shí)數(shù)來(lái)講表示n位小數(shù),對(duì)于字符串來(lái)講,表示截取的字符個(gè)數(shù)
l????????? l,h? ??輸出長(zhǎng)度的修正
l對(duì)整型指定長(zhǎng)整型long
例:%ld , %lx , %lo , %lu
l對(duì)實(shí)型指定雙精度double
例:%lf
h 只用于整型的格式字符修正為short
例:%hd , %hx , %ho , %hu
?
2)???????? 格式字符 指定輸出項(xiàng)的數(shù)據(jù)類(lèi)型和輸出格式。
l????????? d 有符號(hào)十進(jìn)制整數(shù)。
l????????? o 無(wú)符號(hào)八進(jìn)制數(shù)。
l????????? x 無(wú)符號(hào)十六進(jìn)制數(shù)(小寫(xiě)的x格式中用小寫(xiě)字母a,b,c,d,e,f來(lái)表示10到15之間的數(shù),大寫(xiě)的X則用大寫(xiě)的ABCDEF來(lái)表示10到15之間的數(shù))
l????????? u 不帶符號(hào)的十進(jìn)制整數(shù)。
l????????? c? 輸出一個(gè)字符。
l????????? s 輸出一個(gè)字符串
l????????? e 以指數(shù)形式輸出實(shí)型數(shù)。
l????????? f???? ?? 以小數(shù)形式輸出實(shí)型數(shù)(單精度,或稱(chēng)浮點(diǎn)數(shù))。
l????????? g 自動(dòng)決定輸出格式為e和f中較短的一種,不打印無(wú)效的零。
l????????? % 輸出%
補(bǔ)充:%a(%A) 浮點(diǎn)數(shù)、十六進(jìn)制數(shù)字和p-(P-)記數(shù)法(C99)
?????????? %p 指針
?
注意:
????????? 對(duì)于單精度數(shù),使用 %f 格式符輸出時(shí),僅前7位是有效數(shù)字,小數(shù)6位(有效數(shù)字定義:在一個(gè)近似數(shù)中,從左邊第一個(gè)不是0的數(shù)字起,到精確到末位數(shù)止,所有的數(shù)字,都叫這個(gè)近似數(shù)字的有效數(shù)字)。
????????? 對(duì)于雙精度數(shù),使用 %lf 格式符輸出時(shí),前16位是有效數(shù)字,小數(shù)6位。
????????? 編譯程序只是檢查printf 函數(shù)的調(diào)用形式,不分析格式控制字符串,如果格式字符與輸出項(xiàng)的類(lèi)型不匹配,不進(jìn)行類(lèi)型轉(zhuǎn)換(輸出的數(shù)為隨機(jī))。
????????? 格式控制字符串中可以包含轉(zhuǎn)義字符。
????????? 格式控制字符串中的普通字符則原樣輸出。
????????? 輸出項(xiàng)的參數(shù)除了常數(shù)、變量外還可以是表達(dá)式、函數(shù)調(diào)用。
????????? %g,%f和%e這三個(gè)格式用于打印浮點(diǎn)值,%g格式用于打印那些不需要按列對(duì)齊的浮點(diǎn)數(shù)特別有用,其作用有:
a)???????? 去掉該數(shù)尾多余的零(沒(méi)有達(dá)到六位的數(shù))
b)???????? 保留六位有效數(shù)字(多余六位的)
%e格式用于打印浮點(diǎn)數(shù)時(shí),一律顯式地使用指數(shù)形式
例如:輸出圓周率時(shí)是:3.141593e+00
??? 它們的區(qū)別:
??? %g格式打印出的數(shù)是總共6位有效數(shù)字
??? %e格式打印出小數(shù)點(diǎn)后的6位有效數(shù)字
%f禁止使用指數(shù)形式來(lái)表示浮點(diǎn)數(shù),因此圓周率輸出為:3.141593(但注意它的精度要求:也是小數(shù)點(diǎn)后6位有效數(shù)字)
????????? %E和%G只是在輸出時(shí)用大寫(xiě)字母(E)代替了小寫(xiě)字母(e)
????????? %%格式用于打印一個(gè)%字符。
????????? 輸出正負(fù)號(hào)的技巧,例如:
printf("%+d %+d %+d\n",-5,0,5);
只要在中間加個(gè)“+”號(hào)就行,作用是輸出符號(hào)位(即,數(shù)的正負(fù)號(hào))
如果不希望正數(shù)的前面出現(xiàn)‘+’號(hào),只要在“% d”中間加個(gè)“ ”號(hào)(即空格)就行,例如:
int i;
for(i=-3;i<=3;i++)
printf("% d\n",i);?? ?// 注意%和d之間有一個(gè)空格
?
?2.???????? 轉(zhuǎn)義字符
\a: 蜂鳴,響鈴
\b: 回退:向后退一格
\f: 換頁(yè)
\n: 換行,光標(biāo)到下行行首
\r: 回車(chē),光標(biāo)到本行行首
\t: 水平制表
\v: 垂直制表
\\: 反斜杠
\': 單引號(hào)
\": 雙引號(hào)
\?: 問(wèn)號(hào)
\ddd: 1到3位八進(jìn)制數(shù)所代表的字符
\xhh: 1到2位十六進(jìn)制數(shù)所代表的字符
\0: 空字符(NULL),什么都不做
注:
l????????? \v垂直制表和\f換頁(yè)符對(duì)屏幕沒(méi)有任何影響,但會(huì)影響打印機(jī)執(zhí)行響應(yīng)操作。
l????????? \n其實(shí)應(yīng)該叫回車(chē)換行。換行只是換一行;\r回車(chē)只是回到行首。
l????????? \t 光標(biāo)向前移動(dòng)四格或八格,可以在編譯器里設(shè)置
l????????? \' 在字符里(即單引號(hào)里)使用。在字符串里(即雙引號(hào)里)不需要,只要用 ' 即可。
例:
如果在字符'a'中直接使用',就會(huì)出現(xiàn)這種情形:'a'' ,編譯器會(huì)報(bào)錯(cuò),因?yàn)榫幾g器會(huì)認(rèn)為多寫(xiě)了一個(gè)單引號(hào)。
所以在字符中時(shí),必須使用\',以避免歧義性。
如果為了在字符串里面添加一個(gè)單引號(hào),直接用單引號(hào) ' ?即可,如果用轉(zhuǎn)義字符 \' 的話就會(huì)把\'兩者直接算進(jìn)去。
總結(jié)
以上是生活随笔為你收集整理的C语言格式控制符和转义字符的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: String.Format()方法
- 下一篇: 配置.net 3.0开发环境