Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1742925
  • 博文数量: 1493
  • 博客积分: 38
  • 博客等级: 民兵
  • 技术积分: 5834
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-19 17:28
文章分类

全部博文(1493)

文章存档

2016年(11)

2015年(38)

2014年(137)

2013年(253)

2012年(1054)

2011年(1)

分类:

2012-07-27 09:00:54

原文地址:printf系列详解 作者:tuyer

printf系列主要有三个函数: printf , fprintf , sprintf 。

   各自的功能很好记住,printf 向标准输出 输出内容; fprintf,就是向filestream(文件流)输出;sprintf,就是输出到string(字符数组中)。

   各自的形式为: printf就不说了,

   fprintf(文件流,“”,参数);

    sprintf(字符数组,“”,参数);

    这三个函数均有返回值,返回值为传送的字符数。

 

   常见的格式类型有: %d, %u, %f, %c, %s, %o, %x, %p(输出指针) ,%e(科学计数法输出), %g

有几点需要注意的是 %x 与%X还是有点区别的,区别就是输出的值a~f是大写还是小写的区别。

%n,是用来统计当前已经输出了多少字符。比如 int a; printf("hello%n",&a); 此时a的值应该为5。但是%n在visual studio中默认情况下可能会被关闭了。

%%用来输出“%”号。

 

宽度修饰符

   用来设置输出的时候最小的宽度。比如 printf("%8d",a); 这样子,如果a输出的数值没有8位,则输出结果为右对齐,左边补空格。若a本生就已经有8位或以上,则我们可以或略宽度修饰符,如实地输出a。 所以宽度修饰符不会截断,不会影响输出误差。

 

精度修饰符

用来设置输出的精度。

对于整形,用来设置打印出的最少字符个数。 比如printf("%.2d",1),输出的结果会为 01(即前面补0)

对于浮点数,用来设置小数点后面的位数。比如printf("%.2f",3.1212),输出结果为3.12

对于字符串,用来设置之多打印的位数。比如printf("%.2s","hello"),输出结果为"he"。

 

标志:

在 % 与 d、u什么之间还可以加上 "+" , "-",与空格。

加上正号的作用是 当数值为正数时,会打印出正号。比如printf("%+d",1),输出为+1

加上-号的作用是仅当在宽度修饰符存在的情况下才有用,用来修改宽度的对其方式,使其变为左对齐,右边填充空格

加上空格的作用是 当数值为正数时,不会打印正号,但是会留个空白。 主要是为对其着想的。

 

可变宽度与精度

在宽度描述符中我们只能输入整数,不能用宏表式(因为宏定义不能进入字符串里面)。为了消除这个局限,出现了可变宽度。

使用* 代替具体的数值,然后在参数后面定义。

使用方法如:

printf("%*.*f", 8, 2, 3.1415926);

这就等价与printf("%8.2f",3.1415926), 表示输出的总宽度为8位,小数点后2位,结果为“----3.14", -表示空格。
阅读(500) | 评论(0) | 转发(0) |
0

上一篇:Linux内核驱动之I/O内存

下一篇:tcp编程

给主人留下些什么吧!~~