% 格式字符(eg:%X,%p)和附加字符

前言

一个格式声明以“%”开头,以下述格式符之一为结束,中间可以插入附加格式符(也称修饰符)。

  格式符

以下字母如用在格式声明中就作为格式字符。

  • d,i 格式符:以带符号的十进制形式输出整数。(通常都是用%d)

  • o格式符:以八进制无符号形式输出整数(不输出前导符0)
  • x,X格式符:以十六进制无符号形式输出整数(不输出前导符0x),用x则输出十六进制数的a~f时以小写字母形式输出。用X则输出十六进制数A~F的时候以大写字母形式输出。
  • u格式符:以无符号十进制形式输出整数
  • c格式符:以字符形式输出,只输出一个字符
  • s格式符:输出字符串
  • f格式符:以小数形式输出单精度数
  • lf格式符:以小数形式输出双精度数
  • e,g格式符:以指数形式输出实数,用e时指数以“e”表示(如1.2e+02),用E时指数以“E”表示(如:1.2E+02)
  • g,G格式符:选中%f或%e格式中输出宽度较短的一种格式,不输出无意义的0.用G时,若以指数形式输出,则指数以大写表示。
  • zu格式符:专门输出sizeof计算出来的大小的一种格式符
  • p格式符:以地址的形式打印(即十六进制),它不仅仅可以打印地址,也可以打印其他数,可以等价于%x,但是%x打印的话前面不会有0。
    并且每一次运行程序的时候a的地址都会不一样,因为每一次程序创建的时候都会给a重新开辟空间。
    若:p = &a,此时p是一个指针变量。

附加字符(也称修饰符)

  • l:长整形整数,可加在格式符d、o、x、u的前面
  • m(代表一个正整数):数据最小宽度
  • n(代表一个正整数):对实数,表示输出n位小数;对字符串,表示截取的字符串个数。
  • -:输出的数字或字符在域内向左靠齐。

补充

默认

  • 默认输出实际宽度,右对齐

整数

  • %nd:整数输出n位,不够左边补空格,右对齐。
  • %0nd:整数输出n位,不够左边补空格
  • %-nd:整数输出n位,不够右边补0,左对齐。
  • printf("%*d", m, n):第一个m会取代“*”表示宽度,n为输出

浮点型

  • %m.nf浮点型输出,m为宽度(包括小数点),n为小数点位数
  • 宽度不足左边补空格,超过自动突破限制(不截取)
    小数部分不足右边补0,超过自动截取并四舍五入
  • n为0时不输出小数,如:%5.0f
  • %0m.nf宽度左边不够补0

%g或%G

  •  %.ng或%.nG取n位有效数字
    不够左边补0,超过突破限制
  • 不加宽度时自动截取6位(即%g或%G)

在printf中使用注意:

  • printf从左向右进行输出,但是是从右向左进行运算,所以尽量不要在printf中做运算!
  • printf函数输出时,务必注意输出对象的类型应于上述格式说明匹配,否则将会出现错误
  • 除了X,E,G外,其他格式字符必须用小写字母,如%d不能写成%D。

在scanf中使用注意:

  • 变量前面记得加&
  • 如果在格式控制字符串中除了格式声明以外还有其他字符,则在输入数据时在对应的位置上应输入与这些字符相同的字符。例如:
    scanf("a=%f,b=%f,c=%f");
    此时也只能输入:a=1,b=2,c=2。如果输出1 2 3 就错了。
    因为系统会把它和scanf函数中的格式字符逐个字符对照检查,只是在%f的位置上用后面输入的一个浮点数代替。
  • 在用%c格式声明输入字符时,空格和“转义字符”中的字符都会作为有效字符输入!所以如果要连续赋给变量,eg:scanf(”%c%c%c",&a,&b,&c),此时应该连续输入abc,而不是a b c。
  • 但是在输入数值的时候,在两个数值之间需要插入空格(或其他分隔符),以便系统能区分两个数组。
  • scanf遇空格、回车、Tab键或遇非法字符(不属于数值的字符),就认为该数据结束。
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值