输出函数 printf()
printf函数打印数据的指令要与待打印数据的类型相匹配,
例如打印整数用%d
,打印字符类型用%c
,
以下是转换说明以及打印后结果。
%a
浮点数,十六进制数和p计数法(C99和C11)%A
浮点数,十六进制数和p计数法(C99和C11)%c
单个字符%d
有符号十进制整数%e
浮点数,e计数法%E
浮点数,e计数法%f
浮点数,十进制计数法%g
根据数值的不同,自动选择%f或%e。%e的格式用于指数小于等于-4或者大于等于精度时%G
根据数值的不同,自动选择%f或%E。%E的格式用于指数小于等于-4或者大于等于精度时%i
有符号十进制整数%o
无符号八进制整数%p
指针%s
字符串%u
无符号十进制整数%x
无符号十六进制整数,使用十六进制数0f%X
无符号十六进制整数,使用十六进制数0F
%%
打印一个百分号
printf()函数的格式 printf(格式字符串,待打印1,待打印2);
例子:
1 |
|
printf的转换说明修饰符
标记
-
+
空格
#
和0
可以不使用或者使用多个标记
示例"%-10d"
数字
最小字段宽度,如果该字段不能容纳打印的数字或字符串,系统会使用更宽的字段。
示例"%4d"
.数字
精度
对于%e
,%E
和%f
转换,表示小数点右边数字的位数
对于%g
,%G
转换,表示有效数字最大位数
对于%s
转换表示待打印字符的最大数量
对于整型转换,表示待打印数字的最小位数
如果有必要,使用前导0来达到这个位数
只是用.表示其后跟随一个0,所以%.f
和%0.f
一样
示例"%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类型的值,这些类型定义在stdint.h头文件中
示例"%jd"
,"%8jx"
l
和整型转换说明一起使用,表示long int 或 unsigned long int 类型的值
示例"%ld"
,"%8lu"
ll
和整型转换说明一起使用,表示long long int 或 unsigned long long int 类型的值(C99)
示例"%lld"
,"%8llu"
L
和浮点转换说明一起使用,表示long double 类型的值
示例"%Ld"
,"%10.4Le"
t
和整型转换说明一起使用,表示ptrdiff_t 类型的值。ptrdiff_t 是两个指针差值的类型(C99)
示例"%td"
,"%12ti"
z
和整型转换说明一起使用,表示size_t 类型的值。size_t 是sizeof返回的类型(C99)
示例"%zd"
,"%12zd"
printf的标记
-
待打印项左对齐,
示例"%-20s"
+
有符号值若为正则在前面显示加号,若为负,则在值前面显示减号,
示例"%+6.2f"
空格
有符号值若为正则在前面显示前导空格,若为负,则在值前面显示减号,
示例"%6.2f"
#
,把结果转换为另外一种形式。如果是%o则以0开始,若是%x,%X,则以0x,0X开始;对于所有的浮点格式,#保证了即使后面没有任何数字,也打印一个小数点字符。对于%g,%G,#防止结果后面的0被删除。
示例"%#o"
,"%#8.0f"
,"%+#10.3e"
0
对于数值格式,用前导0代替空格填充字段宽度。对于整数格式,如果出现-标记或者指定精度,则忽略该标记。
输入函数 scanf()
和printf()
的区别是,printf()
使用变量,常量,和表达式,scanf()
函数使用只想变量的指针。
特征:
1.如果使用scanf()
读取基本变量类型的值,在变量名前加一个&。
2.如果用scanf()
把字符串读入字符数组中,不要使用&。
1 |
|
scanf()
函数会使用空白(换行符,制表符,空格)把输入分为多个字段,再依次把转换说明和字段匹配时跳过空白。
唯一例外的是%c
转换说明,根据%c
,scanf()
会读取每个字符,包括空白。
scanf()
的转换说明和printf()
几乎相同,但有细小区别如下:
对于float类型和double类型printf()
都使用%f,%e,%E,%g,%G转换说明。而scanf()
只把他们用作float类型,对于double类型时要使用l
修饰符。如下示例:
1 |
|