C语言printf和scanf--c语言学习笔记7

-%输出方式是两个百分号,代表一个百分号
printf("only %d%%,is ok",23)输出only 23%,is ok

printf()的转换说明修饰符

在%和转换字符之间插入修饰符可以修饰基本的转换说明。表1和表2列出可作为修饰符的合法字符。
如果要插入多个字符,其书写顺序应该与表1中列出的顺序相同。不是所有的组合都可行。表中有些字符是C99新增的,如果编译器不支持C99,则可能不支持表中的所有项。
表1 printf的修饰符

修饰符含义
标记表2描述了5中标记(-,+,空格,#和0),可以不使用标记或使用多个标记,示例:”%-10d”
数字最小字段宽度,如果该字段不能容纳待打印的数字或字符串,系统会使用更宽的字段,示例”%4d”
.数字精度,对于%e,%E,和%f转换,表示小数点右边数字的位数,对于%g和%G转换,表示有效数字最大位数,对于%s转换,表示待打印字符的最大数量,对于整数类型转换,表示待打印数字的最小位数,如果有必要,使用前导0来达到这个位数,只使用.表示其后跟随一个0,所以%.f和%.0f相同,示例:%5.2f打印一个浮点数,字段宽度为5字符,其中小数点后面有2位数字
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”“%8jd”
l
ll
L
t
z

表2 printf中的标记

标记含义
-待打印项目左对齐,即从字段的左侧开始打印该项目
+有符号值则打印时前面有加号,若为负则打印时前面有减号
空格有符号值若为正,则在值前面显示前导空格(不显示任何符号);若为负数,则在值前面显示减号
#将结果转换为另一种形式,
0

转换说明的意义

转换说明把以二进制格式储存在计算机中的值转换成一系列字符(字符串)以便于显示。

转换不匹配

调用printf时,计算机根据变量类型(注意,注意,注意,不是变量转换说明,不是%d,%l那种东东,千万注意。)把这些值放入栈中。然后printf函数时,该函数根据转换说明(注意,注意,注意,不是根据变量类型,千万注意。)从栈中读取值,例如打印%d,就依序取前4个字节,而不考虑前4个字节是不是要打印的完整数据

printf返回值

printf函数返回值是打印字符的个数,如果输出有错误,则返回一个负数

scanf()

只要在每个输入项目之间输入至少一个换行符、空格或制符即可。
唯一例外的是%c转换说明,根据%c,scanf()会读取每一个字符,包括空白,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值