4.字符串的格式化输入/输出

字符串的格式化输入/输出

4.2字符串简介

4.2.1char类型数组和null字符

C语言没有专门用于储存字符串的变量类型,字符串都被储存在char类型的数组中。其中,空字符用来标记字符串的结束,不是数字0,它是非打印字符,其ASCII码值是(或等价于)0。因此,数组的容量必须至少比待储存的字符串中的字符数多1

4.3常量和c预处理器

4.3.2明示常量

C头文件limits.hfloat.h分别提供了与整数类型和浮点类型大小限制相关的详细信息。

4.4printf()和scanf()

4.4.1printf()函数

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

在这里插入图片描述

由于printf()函数使用%符号来标识转换说明,因此打印%符号时需要使用两个%符号。

4.4.3printf()的转换说明修饰符

%和转换字符之间插入修饰符可以修饰基本的转换说明。

在这里插入图片描述

对于浮点类型,有用于doublelong double类型的转换说明,却没有float类型的。这是因为在K&R C中,表达式或参数中的float类型值会被自动转换成double类型。一般而言,ANSI C不会把float自动转换成double。然而,为保护大量假设float类型的参数被自动转换成double的现有程序,printf()函数中所有float类型的参数(对未使用显式原型的所有c函数都有效)仍自动转换成double类型。因此,无论是K&R C还是ANSI C,都没有显示float类型值专用的转换说明。

在这里插入图片描述

4.4.4转换说明的意义

转换说明把以二进制格式储存在计算机中的值转换成一系列字符(字符串)以便于显示。实际上,转换说明就是翻译说明,并不会改变原始值。

4.4.5使用scanf()

scanf()函数所用的转换说明与printf()函数几乎相同。主要的区别是,对于float类型和double类型,printf()都使用%f%e%E%g%G转换说明。而scanf()只把它们用于float类型,对于double类型时要使用l修饰符。

在这里插入图片描述

可以在转换说明中(百分号和转换字符之间)使用修饰符。如果要使用多个修饰符,必须按下表中的顺序书写。

在这里插入图片描述

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

printf()scanf()都可以使用*修饰符来修改转换说明的含义。
printf()中,如果不想预先指定字段宽度,希望通过程序来指定,那么可以用*修饰符来代替字段宽度。但还是要用一个参数告诉函数,字段宽度应该是多少。也就是说,如果转换说明是%*d,那么参数列表中应包含*d对应的值。这个技巧也可用于浮点值指定精度和字段宽度。
scanf()中的*的用法与此不同。把*放在%和转换字符之间,会使得scanf()跳过相应的输出项。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值