c语言 格式化输入输出 掌握这些就够了

printf()函数

转换说明

printf()函数打印数据的指令要与待打印数据类型相匹配

转换说明输出
%a浮点数,十六进制数和p记数法
%A浮点数,十六进制数和p记数法
%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
%X无符号十六进制整数,使用十六进制数0F
%%打印一个百分号

转换说明修饰符

修饰符含义
标记下面描述了5种标记(-·+·空格·#和0),可以不使用标记或使用多个标记
数字最小字段宽度 如果该字段不能容纳待打印的数字或字符串,系统会使用更宽的字段
.数字精度 下面详细介绍
h和整型转换说明一起使用,表示short int 或unsigned short int 类型的值
hh和整型转换说明一起使用,表示signed char 或 unsigned char 类型的值
j和整型转换说明一起使用,表示intmax_t或uintmax_t类型的值
l和整型转换说明一起使用,表示long int 或 unsigned long int 类型的值
ll和整型转换说明一起使用,表示long long int 或 unsigned long int 类型的值
L和浮点转换说明一起使用,表示long double 类型的值
t和整型转换说明一起使用,表示ptrdiff_t类型的值。ptrdiff_t是两个指针差值的类型
z和整型转换说明一起使用,表示size_t类型的值。size_t是sizeof返回的类型。

详细转换说明在这个文章里数据类型

.数字 转换字符的精度含义
%e %E和%f表示小数点右边数字的位数
%g和%G表示有效数字最大位数
%s表示待打印字符的最大数字
整型转换表示待打印数字的最小位数

如有必要,使用前导0来达到这个位数
只使用 . 表示其后跟随一个0,所以%.f和%.0f相同

标记含义
-待打印左对齐
+有符号若为正,则在值前面显示加号;若为负,则在值前面显示减号
空格有符号值若为正,则在前面显示前导空格,若为负,则值前面显示减号
#把结果转换为另一种形式,如果是%o格式,则以0开始;如果是%x或%X格式,则以0x或0X开始;对于所有的浮点格式,#保证了即使后面没有任何数字,也打印一个小数点字符。对于%g和%G格式,#防止结构后面0被删除。
0对于数值格式,用前导0代替空格填充字段宽度。对于整数格式,如果出现-标记或指定精度,则忽略该标记

printf()的返回值

printf()函数也有一个返回值,他返回打印字符的个数。
如果有输出错误,printf()则返回一个负值

打印较长的字符串

三个方法:

  1. 使用多个printf()语句,字符串后面不以\n字符结束
  2. 用反斜杠 \ 和Enter 键组合来断行
printf("haldkahdkn alk dnalk dl  \
					akn dklan la kn");
  1. ANSI C引入的字符串连接,在两个用双引号括起来的字符串之间用空格隔开,C编译器会把多个字符串看成一个字符串
printf("adadaf"   "fafaf");

scanf()函数

转换说明

转换说明含义
%c字符 char
%d有符号十进制整数 int
%e,%f,%g,%a浮点数 对应的是float类型
%E,%F,%G,%A浮点数 对应的是float类型
%i有符号十进制整数 int
%o八进制整数 int
%p指针
%s字符串
%u无符号十进制整数 int
%x,%X有符号十六进制整数 int

根据%c,scanf()会读取每个字符,包括空白。
scanf()所用的转换说明与printf()函数几乎相同,主要区别是对于float类型和double类型,scanf()只把%e,%f,%g,%a它们用于float类型,对于double类型要是有l修饰

转换说明修饰符

转换说明中的修饰符含义
*抑制赋值
数字最大字段宽度
hh把整数作为signed char或unsigned char 类型读取
ll把整数作为long long 或unsigned long long 类型读取
h把整数作为short int 或unsigned short int 类型读取
llong类型或unsigned long类型或double类型
L对应的是long double 类型

格式字符串中的普通字符

  1. 除普通字符外的普通字符必须与输入字符串严格匹配
    例如
scanf("%d,%d",&a,&b);

用户需要输入一个数字·一个逗号然后再输入一个数字
2. 除了%c以外,其他转换说明都会自动跳过待输入值前面所有的空白

scanf()的返回值

返回成功读取的项数

printf()和scanf() 的*修饰符

printf("%*.*f",9,8,7.2)

9赋给第一个*
8赋给第二个*
7.2赋给%f
这个技巧用于指定精度和字段宽度

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值