鱼C论坛

 找回密码
 立即注册
查看: 202423|回复: 272

[函数快查] printf -- 格式化输出

    [复制链接]
发表于 2015-11-22 17:27:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
printf 函数文档


函数概要:

printf 函数用于打印格式化字符串到标准输出流。


函数原型:

  1. #include <stdio.h>
  2. ...
  3. int printf ( const char * format, ... );
复制代码


参数解析:

1、format 参数

format 参数是一个格式化字符串,由格式化占位符和普通字符组成。

格式化占位符(以 % 开头)用于指明输出的参数值如何格式化。


格式化占位符的语法如下:

%[flags][width][.precision][length]specifier

每一个格式化占位符均以 % 开始,以转换字符结束。


specifier转换字符,必选)的内容及含义如下:

转换字符
参数类型;转换结果
c
char;字符
d
int;有符号十进制整数
i
同上
e
double;以指数形式输出单、双精度浮点数(小写 e)
E
同上(大写 E)
f
double;以小数形式输出单、双精度浮点数
g
double;以 %f 或 %e 中较短的输出宽度输出单、双精度浮点数(指数显示小写 e)
G
同上(指数显示大写 E)
o
unsigned int;无符号八进制(无前导 0)
s
char *;字符串
u
int;无符号十进制
x
unsigned int;无符号十六进制(无前导 0x)
X
同上(无前导 0X)
p
void *;指针值
n
int *;存放已写字符的个数
%
不进行参数转换;% 自身

注:如果 % 后边的字符不是转换字符,则其行为没有定义。


flags标志,可选)的内容即含义如下:

标志
含义
-
指定被转换的参数在其字段内左对齐(默认是右对齐)
+
指定在输出的数前面加上正负号
空格
如果第一个字符不是正负号,则在其前面加上一个空格
0
对于数值转换,当输出长度小于字段宽度时,添加前导 0 进行填充
#
指定另一种输出形式:
1. 如果转换字符为 o,则第一个数字为 0
2. 如果转换字符为 x 或 X,则指定在输出的非 0 值前加 0x 或 0X
3. 对于转换字符为 e、E、f、g 或 G 的情况,指定输出总是包含一个小数点。另外,对于转换字符为 g 或 G,还指定输出值尾部无意义的 0 将被保留

注:flags 可同时出现多个,且无顺序要求。


width(宽度,可选)是一个数值,用于指定最小字段的宽度

转换后的参数输出宽度至少要达到这个数值。如果参数的字符数小于该数值,则在参数左边(如果 flags 设置为 -,要求左对齐的话则在右边)填充一些字符。填充字符通常为空格,但是如果 flags 设置为 0,则填充字符为数字 0。


.precision(.精度,可选),通过点号(.)分隔字段的宽度和精度

  • 对于字符串,它指定打印的字符的最大个数
  • 对于整数,它指定打印的数字位数(必要时可加填充位 0 以达到宽度要求)
  • 对于转换字符为 e、E 或 f,它指定打印的小数点后的数字位数
  • 对于转换字符为 g 或 G,它指定打印的有效数字位数


length(长度修饰符,可选)的值可以是 h、hh、l、ll 或 L

  • hh 表示将相应的参数按 signed char 或 unsigned char 类型输出
  • h 表示将相应的参数按 short 或 unsigned short 类型输出
  • l 表示将相应的参数按 long 或 unsigned long 类型输出
  • ll 表示将相应的参数按 long long 或 unsigned long long 类型输出
  • L 表示将相应的参数按 long double 类型输出


2、... 附加参数

该参数的个数由格式化字符串决定。

每个参数的值应当与前面格式化字符串中的占位符类型和位置一一对应。


返回值:

如果函数调用成功,返回值是实际打印的字符数(不包含表示字符串结束的 '\0');

如果函数调用失败,返回值是一个负数。


演示:

  1. #include <stdio.h>

  2. int main()
  3. {
  4.         int a = 520;
  5.         char b = 'F';
  6.         float c = 3.14;
  7.         double d = 3.141592653;

  8.         printf("鱼C工作室创办于2010年的%d\n", a);
  9.         printf("I love %cishC.com!\n", b);
  10.         printf("圆周率是:%.2f\n", c);
  11.         printf("精确到小数点后9位的圆周率是:%11.9f\n", d);

  12.         return 0;
  13. }
复制代码

BaiduShurufa_2015-11-27_14-59-15.png

版权归鱼C工作室(www.fishc.com)所有,转载请注明来源!

评分

参与人数 16荣誉 +75 鱼币 +65 贡献 +39 收起 理由
不会去满足 + 5 + 5 + 3
Crory + 3 + 3 + 2
fuaowei + 5 + 5 + 3
FishC--NO1 + 5 + 5 + 3 无条件支持楼主!
bergice + 5 + 5 + 3
盗墓三七 + 5 + 5 + 3 鱼C有你更精彩^_^
Qjggvnjvd + 5
⑦——东方明亮 + 5 + 5 + 3 鱼C有你更精彩^_^
WW123456... + 5 鱼C有你更精彩^_^
HzfRwh6869 + 3 编程深似海,越学习,越感觉到自己的无知!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-11-22 17:48:34 | 显示全部楼层
支持小甲鱼~期待在下一次二级考试之前出到指针
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 15 反对 2

使用道具 举报

发表于 2015-11-28 23:09:33 | 显示全部楼层
跟着小甲鱼老师再学一遍C
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 8 反对 2

使用道具 举报

发表于 2015-12-1 20:43:17 | 显示全部楼层
支持小甲鱼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2015-12-2 20:38:16 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-10 16:02:10 | 显示全部楼层
要是跟着小甲鱼还是学不会C,都不好意思说自己会编程~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 3 反对 0

使用道具 举报

发表于 2015-12-21 14:06:32 | 显示全部楼层
真是温故而知新啊
又学了一遍。。有新收获
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2015-12-22 11:56:15 | 显示全部楼层
:smile:sad
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-22 11:59:11 | 显示全部楼层
解释的很详细收获很大。。。:smile
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2016-1-4 22:53:16 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-4-29 23:25:24 | 显示全部楼层
nice!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-16 21:43:40 | 显示全部楼层
小甲鱼啊,为什么文本没有办法复制啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2016-8-6 10:15:05 | 显示全部楼层
支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-8-14 07:48:54 | 显示全部楼层
原来printf()不能输出'\n',printf('\n')会报错!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 3

使用道具 举报

发表于 2016-8-23 21:52:09 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-9-29 19:14:35 | 显示全部楼层
张维维 发表于 2016-8-14 07:48
原来printf()不能输出'\n',printf('\n')会报错!!!!

可以的,请注意英文标点“”
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         printf("\n");
  5.         return 0;
  6. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 1

使用道具 举报

发表于 2016-10-10 12:30:07 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-27 22:12:23 | 显示全部楼层
支持小甲鱼,支持鱼C!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-30 14:52:50 | 显示全部楼层
温故而知新
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-3 10:43:58 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 07:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表