格式说明符格式转换说明符printf() / scanf()
表⼀ printf()的转换说明符
转换说明
输出
%a
浮点数、⼗六进制数字和p-记数法 (C99)
%A
浮点数、⼗六进制数字和P-记数法 (C99)
%c
⼀个字符
%d
有符号⼗进制整数
%e
浮点数、e-记数法
%E
浮点数、E-记数法
%f
浮点数,⼗进制记数法
%g
根据数值不同⾃动选择%f或者%e。%e格式在指数⼩于-4或者⼤于等于精度时使⽤%G
根据数值不同⾃动选择%f或者%E。%E格式在指数⼩于-4或者⼤于等于精度时使⽤%i
有符号⼗进制整数 (与%d相同)
%o
⽆符号⼋进制整数
%p
指针(就是指地址)
%s
字符串
%u
⽆符号⼗进制整数
%x
使⽤⼗六进制数字0f 的⽆符号⼗六进制整数
printf函数和scanf函数的格式说明都使用什么字符开始%X
使⽤⼗六进制数字0F的⽆符号⼗六进制整数
%%
打印⼀个百分号
表⼆ printf() 修饰符
修饰符
意义
标志
五种标志 (-、+、空格、# 和0) 都将在表三中描述,可以使⽤零个或多个标志
digit(s)
字段宽度的最⼩值。如果该字段不能容纳要打印的数或者字符串,系统会使⽤更宽的字段。⽰例:“%4d”
.digit(s)
精度。对于%e、%E和%f转换,是将要在⼩数点的右边打印的数字的位数。对于%g和%G转换,是有效数字的最⼤位数。对于%s转换,是将要打印的字符的最⼤数⽬。对于整数转换,是将要打印的数字的最⼩位数;如果必要,要使⽤前导零来达到这个位数。只使⽤“.”表⽰其后跟随⼀个零,所以%.f与%.0f相同。⽰例:“%5.2f”打印⼀个浮点数,他的字段宽度为5个字符,⼩数点后有两个数字。
h
和整数转换说明符⼀起使⽤,表⽰⼀个short int 或者 unsigned short int 类型数值。
⽰例:“%hu”、“%hx”和“%6.4hd”
hh
和整数转换说明符⼀起使⽤,表⽰⼀个signed char 或者unsigned char类型数值。
⽰例:“%hhu”、“%hhx”和“%6.4hhd”
j
和整数转换说明符⼀起使⽤,表⽰⼀个intmax_t或uintmax_t值。
⽰例:“%jd”和“%8jX”
l
和整数说明符⼀起使⽤,表⽰⼀个long int 或者unsigned long int 类型值。
⽰例:“%ld”和“%8lu”
ll
和整数说明符⼀起使⽤,表⽰⼀个long long int或 unsigned long long int 类型值 (C99)。
⽰例:“%lld”和“%8llu”
L
和浮点转换说明符⼀起使⽤,表⽰⼀个long double值。
⽰例:“%Lf”和“%10.4Le”
t
和整数转换说明符⼀起使⽤,表⽰⼀个ptrdiff_t值(与两个指针之间的差相对应的类型) (C99)
⽰例:“%td”和“%12ti”
z
和整数转换说明符⼀起使⽤,表⽰⼀个size_t值(sizeof返回的类型) (C99)。
⽰例:“%zd”和“%12zx”
表三 printf()的标志
修饰符
意义
-
项⽬是左对齐的,也就是说,会把项⽬打印在字段的左侧开始处。⽰例:“%-20s”
+
有符号的值若为正,则显⽰带加号的符号;若为负,则带减号的符号。⽰例:“%+6.2f”
(空格)
有符号的值若为正,则显⽰时带前导空格(但是不显⽰符号);若为负,则带减号符号。+标志会覆盖空格标志。⽰例:“% 6.2f”
#
使⽤转换说明的可选形式。若为%o格式,则以0开始;若为%x和%X格式,则以0x或0X开始,对于所有的浮点形式,#保证了即使不限任何数字,也打印⼀个⼩数点字符。对于%g和%G格式,它防⽌尾随零被删除。⽰例:“%#o”、“%#8.0f”和“%+#10.3E”
对于所有的数字格式,⽤前导零⽽不是⽤空格填充字段宽度。如果出现-标志或者指定了精度(对于整数)则忽略该标志。⽰
例:“%010d”和“%08.3f”
表四 ANSIC 中 scanf()的转换说明符
转换说明符
意义
%c
把输⼊解释成⼀个字符
%d
把输⼊解释成⼀个有符号⼗进制整数
%e,%f,%g, %a
把输⼊解释成⼀个浮点数 (%a是C99标准)
%E,%F,%G,%A
把输⼊解释成⼀个浮点数 (%A是C99标准)
%i
把输⼊解释成⼀个有符号⼗进制整数
%o
把输⼊解释成⼀个有符号⼋进制数
%p
把输⼊解释成⼀个指针(地址)
%s
把输⼊解释成⼀个字符串;输⼊的内容以⼀个⾮空⽩字符作为开始,并且包含知道下⼀个空⽩字符的全部字符
%u
把输⼊解释成⼀个⽆符号⼗进制整数
%x,%X
把输⼊解释成⼀个有符号⼗六进制整数
表五 scanf()的转换修饰符
修饰符
意义
*
滞后赋值。⽰例:“%*d”
digit(s)
最⼤字段宽度;在达到最⼤字段宽度或者遇到第⼀个空⽩字符时(不管哪⼀个先发⽣都⼀样)停⽌对输⼊项的读取。⽰例:“%10s”hh
把整数读作signed char 或 unsigned char 。⽰例:“%hhd”“%hhu”
ll
把整数读作long long或者 unsigned long long (C99)。⽰例:“%lld”“%llu”
h,l或L
“%hd”和“hi”指⽰该值将会存储在⼀个short int中。
“%ho”“%hx”和“%hu”指⽰该值将会存储在⼀个unsigned short int中。
“%ld”和“%li”指⽰该值将会存储在⼀个long中。
“%lo”“%lx”和“%lu”指⽰该值将会存储在⼀个unsigned long中。
“%le”“%lf”和“%lg”指⽰该值以double类型存储。将L(⽽⾮l)与e、f和g⼀起使⽤指⽰该值以long double类型存储。
如果没有这些修饰符,d、i、o和x指⽰int类型,⽽e、f和g指⽰float类型。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论