A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天简单的来总结下,发现很多人对printf的一些特殊功能并不是很清楚。所以总结一下供大家学习交流,如有错误,欢迎大家批评指正。
printf基本的使用,我在这里不说了,那不是本文的重点,下面直接简单粗暴的写上两点干货:

1、在格式化串中添加数字表示使用软约束去拼接字符串。
如:
%15s  本来%s表示输出字符串,但是中间加上一个数字15,表示约束这个字符串为15个字符,之所以说这个约束是软约束,是因为这个约束不是强制的,如果字符串长度小于15,那么这个字符串占则占用15个字节,如果字符串超过了15个字节,字符串不会截断,而是输出实际的长度。

在打印浮点数的时候,会见到如下的写法:
%3.5f  本来%f是打印小数、单精度和双精度都有自己的小数点占用位数,但是中间加了一个小数3.5,其中整数部分3是约束被打印浮点数整数所占位数、小数部分5是约束被打印浮点数小数部分占用位数。需要注意的是,对整数部分的约束为软约束,如果超过的话,不会截断。对小数部分的约束是强制性的约束,超过部分会被截断,并且超过的部分会四舍五入。目前接触到的,只有小数部分的约束是强制性的。

另外还有一种用法就是在格式化输出整数的时候有如下写法:
%06d  原本%d打输出的是整数,%6d的话就是将证书输出的位数限制在6位以内,前面的0表示,如果被打印数没有超过6个字节,那么不够的字节使用0填充,但这里注意,如果要填充,第一位只能是0,如果是其他的值就变成%16d,就是另外的意思了。这个约束也是软约束。

2、printf中的"-"
"-"在printf中的作用是指定格式化输出的对齐方式。
如果什么都不加,默认是右对齐,加上之后就是表示输出的对齐方式是左对齐。


时间不早了,就写到这里。。。。

评分

参与人数 3黑马币 +23 收起 理由
为荣艺学iOS + 6 淡定
骑白马的唐僧 + 7 骚年,你很有想法,我们做朋友吧.
wzf2015 + 10 赞一个!

查看全部评分

47 个回复

倒序浏览
一楼自己占,在补充一点,刚才看有人对转义字符不是很理解,其实很简单:
就是把\后面的字符,不当成是普通的字符,而是将其转换为其他的意思,比如字符n,平常表示字符'n',但是加上\之后就表示换行啦。

常用的可以转义的就那么几个:
\t 制表位
\n 换行
\\ 表示打印一个普通字符\

还有一个比较特殊的就是 打印%号,要用%%。
回复 使用道具 举报
不常用的不知道也没有关系
回复 使用道具 举报
第一个是域宽,第二是左对齐,学了printf都要知道的啦
回复 使用道具 举报
说的有点冗长,为什么不直接写代码,加注释,看了会清楚些
回复 使用道具 举报
不错不错,几个都是很常用的
回复 使用道具 举报
hngdlll 中级黑马 2015-11-19 22:09:26
7#
%06d这样的还真没见过呢,谢谢分享
回复 使用道具 举报
mr.late 中级黑马 2015-11-19 22:19:19
8#
学习。
回复 使用道具 举报
很好;加油
回复 使用道具 举报
ToBeJeek1 发表于 2015-11-19 00:59
不常用的不知道也没有关系

这可不是不常用,这个东西很常用,特别是格式化的时候。。。。。
回复 使用道具 举报
yanggangcl 发表于 2015-11-19 07:33
第一个是域宽,第二是左对齐,学了printf都要知道的啦

大神见多识广、、、、膜拜。。。。。
回复 使用道具 举报
爱尘iPhone 发表于 2015-11-19 09:39
说的有点冗长,为什么不直接写代码,加注释,看了会清楚些

冗长理解起来其实还可以吧、、、、接受你的建议、、以后在写帖子的时候,尽量上点代码。。。。
回复 使用道具 举报
见过几个了
回复 使用道具 举报
谢谢分享!
回复 使用道具 举报
hngdlll 发表于 2015-11-19 22:09
%06d这样的还真没见过呢,谢谢分享

恩恩、学到东西就好、、这个帖子就没白写。。。。。
回复 使用道具 举报
lujia1010 发表于 2015-11-19 10:22
不错不错,几个都是很常用的

你的夸奖就是我更新帖子的动力。。。以后多多学习,相互交流。。。。
回复 使用道具 举报
“-”这个加在哪个位置?%06d是左填充吗?
回复 使用道具 举报
打滚的橘子 发表于 2015-11-20 04:21
“-”这个加在哪个位置?%06d是左填充吗?

“-”放在%后面比如:%-6d 。。
%06d是左填充,在数字的前面补领。。
回复 使用道具 举报

我的其他帖子也还不错、、、也可以去看看哦。。。
回复 使用道具 举报
格式控制字符串的样式是%[flags][width][.prec][F|N|h|l]type

你提到的属于flags和width
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马