C語言輸入輸出格式符
printf函數(格式輸出函數)
1.一般格式
printf(格式控制,輸出表列)
例如:printf("i=%d,ch=%c\n",i,ch);
說明:
(1)“格式控制”是用雙撇號括起來的字符串,也稱“轉換控制字符串”,它包括兩種信息:
①格式說明:由“%”和格式字符組成,它的作用是將輸出的數據轉換爲指定的格式輸出。
②普通字符,即需要原樣輸出的字符。
(2)“輸出表列”是需要輸出的一些數據,可以是表達式
(3)printf函數的一般形式可以表示爲
printf(參數1,參數2,……,參數n)
功能是將參數2~參數n按參數1給定的格式輸出
2.格式字符(9種)
(1)d(或i)格式符。用來輸出十進制整數,有以下幾種用法:
①%d,按整型數據的實際長度輸出。
②%md,m爲指定的輸出字段的寬度。如果數據的位數小於m,則左端補以空格,若大於m,則按實際位數輸出。
③%ld(%mld 也可),輸出長整型數據。
例如:long a=123456;
printf("%ld",a);
(2)o格式符,以八進制數形式輸出整數。格式:%o,%mo,%lo,%mlo都可。
(3)x(或X)格式符,以十六進制數形式輸出整數。格式:%x,%mx,%lx,%mlx都可。
(4)u格式符,用來輸出unsigned型數據,即無符號數,以十進制數形式輸出。格式:%u,%mu,%lu都可。
參見:li4-3.c
(5)c格式符,用來輸出一個字符。格式:%c,%mc都可。
(6)s格式符,用來輸出一個字符串。格式:%s,%ms,%-ms,%m.ns,%-m.ns都可。
參見:li4-5.c
(7)f格式符,用來輸出實數(包括單、雙精度),以小數形式輸出。格式:%f,%m.nf,%-m.nf都可。
注意:單精度實數的有效位數一般爲7位,雙精度爲16位。
參見:li4-6.c
li4-7.c
li4-8.c
(8)e(或E)格式符,以指數形式輸出實數。格式:%e,%m.ne,%-m.ne都可。
(9)g(或G)格式符,用來輸出實數,它根據數值的大小,自動選f格式或e格式(選擇輸出時佔寬度較小的一種)。
3.說明
(1)除了X、E、G(用大寫字母表示)外,其他格式字符必須用小寫字母;
(2)“格式控制”字符串內可以包含轉義字符;
(3)如果想輸出字符“%”,則應該在“格式控制”字符串中用連續兩個%表示,如:
printf("%f%%",1.0/3);
(4)格式字符表參見下表
表4.1 printf格式字符
格式字符 說 明
d,i 以帶符號的十進制形式輸出整數(正數不輸出符號)
o 以八進制無符號形式輸出整數(不輸出前導符0)
x,X 以十六進制無符號形式輸出整數(不輸出前導符0x),用x則輸出十六進制數的a~f時以小寫形式輸出,用X時,則以大寫字母輸出
u 以無符號十進制形式輸出整數
c 以字符形式輸出,只輸出一個字符
s 輸出字符串
f 以小數形式輸出單、雙精度數,隱含輸出6位小數
e,E 以指數形式輸出實數
g,G 選用%f或%e格式中輸出寬度較短的一種格式,不輸出無意義的0
表4.2 printf的附加格式說明字符
字符
說明
字母l
用於長整型整數,可加在格式符d、o、x、u前面
m(代表一個正整數)
數據最小寬度
n(代表一個正整數)
對實數,表示輸出n位小數;對字符串,表示截取的字符個數
(二)
c語言不提供輸入輸出語句,輸入輸出操作是由c的庫函數完成。但要包含頭文件stdio.h。 putchar( ) 向終端輸出一個字符 printf( )的格式字符: ① d格式符 用來輸出十進制整數 %d 按整型數據的實際長度輸出 %md 使輸出長度爲m,如果數據長度小於m,則左補空格,如果大於m,則輸出實際長度 %ld 輸出長整型數據 ② o格式符 以八進制形式輸出整數 ③ x格式符 以十六進制形式輸出整數 ④ u格式符 用來輸出unsigned型數據,以十進制形式輸出 ⑤ c格式符 用來輸出一個字符 ⑥ s格式符 輸出一個字符串 %s 輸出實際長度字符串 %ms 輸出的串佔m列,如果串長度小於m,左補空格,如果大於m,實際輸出 %-ms輸出的串佔m列,如果串長度小於m,右補空格, %m.ns 輸出佔m列,但只取字符串中左端n個字符並靠右對齊 %-m.ns m、n含義同上,靠左對齊,如果n>m,則m自動取n值 ⑦ f格式符 以小數形式輸出實數 %f 整數部分全部輸出,小數部分輸出6位 %m.nf 輸出數據共佔m列,其中有n位小數。如果數值長度小於m,左補空格 %-m.nf 同上,右補空格 ⑧ e格式符 以指數形式輸出實數 %e 系統指定6位小數,5位指數(e+002 ) ⑨ g格式符 輸出實數,根據數值大小,自動選f格式或e格式
1.一般格式
printf(格式控制,輸出表列)
例如:printf("i=%d,ch=%c\n",i,ch);
說明:
(1)“格式控制”是用雙撇號括起來的字符串,也稱“轉換控制字符串”,它包括兩種信息:
①格式說明:由“%”和格式字符組成,它的作用是將輸出的數據轉換爲指定的格式輸出。
②普通字符,即需要原樣輸出的字符。
(2)“輸出表列”是需要輸出的一些數據,可以是表達式
(3)printf函數的一般形式可以表示爲
printf(參數1,參數2,……,參數n)
功能是將參數2~參數n按參數1給定的格式輸出
2.格式字符(9種)
(1)d(或i)格式符。用來輸出十進制整數,有以下幾種用法:
①%d,按整型數據的實際長度輸出。
②%md,m爲指定的輸出字段的寬度。如果數據的位數小於m,則左端補以空格,若大於m,則按實際位數輸出。
③%ld(%mld 也可),輸出長整型數據。
例如:long a=123456;
printf("%ld",a);
(2)o格式符,以八進制數形式輸出整數。格式:%o,%mo,%lo,%mlo都可。
(3)x(或X)格式符,以十六進制數形式輸出整數。格式:%x,%mx,%lx,%mlx都可。
(4)u格式符,用來輸出unsigned型數據,即無符號數,以十進制數形式輸出。格式:%u,%mu,%lu都可。
參見:li4-3.c
(5)c格式符,用來輸出一個字符。格式:%c,%mc都可。
(6)s格式符,用來輸出一個字符串。格式:%s,%ms,%-ms,%m.ns,%-m.ns都可。
參見:li4-5.c
(7)f格式符,用來輸出實數(包括單、雙精度),以小數形式輸出。格式:%f,%m.nf,%-m.nf都可。
注意:單精度實數的有效位數一般爲7位,雙精度爲16位。
參見:li4-6.c
li4-7.c
li4-8.c
(8)e(或E)格式符,以指數形式輸出實數。格式:%e,%m.ne,%-m.ne都可。
(9)g(或G)格式符,用來輸出實數,它根據數值的大小,自動選f格式或e格式(選擇輸出時佔寬度較小的一種)。
3.說明
(1)除了X、E、G(用大寫字母表示)外,其他格式字符必須用小寫字母;
(2)“格式控制”字符串內可以包含轉義字符;
(3)如果想輸出字符“%”,則應該在“格式控制”字符串中用連續兩個%表示,如:
printf("%f%%",1.0/3);
(4)格式字符表參見下表
表4.1 printf格式字符
格式字符 說 明
d,i 以帶符號的十進制形式輸出整數(正數不輸出符號)
o 以八進制無符號形式輸出整數(不輸出前導符0)
x,X 以十六進制無符號形式輸出整數(不輸出前導符0x),用x則輸出十六進制數的a~f時以小寫形式輸出,用X時,則以大寫字母輸出
u 以無符號十進制形式輸出整數
c 以字符形式輸出,只輸出一個字符
s 輸出字符串
f 以小數形式輸出單、雙精度數,隱含輸出6位小數
e,E 以指數形式輸出實數
g,G 選用%f或%e格式中輸出寬度較短的一種格式,不輸出無意義的0
表4.2 printf的附加格式說明字符
字符
說明
字母l
用於長整型整數,可加在格式符d、o、x、u前面
m(代表一個正整數)
數據最小寬度
n(代表一個正整數)
對實數,表示輸出n位小數;對字符串,表示截取的字符個數
(二)
c語言不提供輸入輸出語句,輸入輸出操作是由c的庫函數完成。但要包含頭文件stdio.h。 putchar( ) 向終端輸出一個字符 printf( )的格式字符: ① d格式符 用來輸出十進制整數 %d 按整型數據的實際長度輸出 %md 使輸出長度爲m,如果數據長度小於m,則左補空格,如果大於m,則輸出實際長度 %ld 輸出長整型數據 ② o格式符 以八進制形式輸出整數 ③ x格式符 以十六進制形式輸出整數 ④ u格式符 用來輸出unsigned型數據,以十進制形式輸出 ⑤ c格式符 用來輸出一個字符 ⑥ s格式符 輸出一個字符串 %s 輸出實際長度字符串 %ms 輸出的串佔m列,如果串長度小於m,左補空格,如果大於m,實際輸出 %-ms輸出的串佔m列,如果串長度小於m,右補空格, %m.ns 輸出佔m列,但只取字符串中左端n個字符並靠右對齊 %-m.ns m、n含義同上,靠左對齊,如果n>m,則m自動取n值 ⑦ f格式符 以小數形式輸出實數 %f 整數部分全部輸出,小數部分輸出6位 %m.nf 輸出數據共佔m列,其中有n位小數。如果數值長度小於m,左補空格 %-m.nf 同上,右補空格 ⑧ e格式符 以指數形式輸出實數 %e 系統指定6位小數,5位指數(e+002 ) ⑨ g格式符 輸出實數,根據數值大小,自動選f格式或e格式
3.數據輸入 getchar( ) 從終端輸入一個字符 scanf( 格式控制,地址列表) 標準C scanf中不使用%u,對於unsigned型數據,以%d或%o或%x輸入。%後的*,用來跳過它相應的數據。輸入數據時不能規定精度如scanf( "%7.2f", &a );是不合法的。
v