当前位置:   article > 正文

【C语言】printf 标准输出函数(详解+用法)_printf头文件

printf头文件

为什么要学习printf?

printf是用来标准输出(显示器)的函数,有人一定会说“我会用cout,为什么要学习prinf?”。确实cout在部分使用上比printf方便,因为不用一直主动格式化控制输出,利用C++的新语法函数重载,让编译器完成了该部分工作。按道理来说,C中的printf是C++的cout的祖宗,我们最先该掌握的也是printf才是(C++是由C质变产生的,C++兼容C这点一定要知道)。
当你曾用cout格式控制过小数输出,就明白cout的痛苦了吧。我们之所以要学习printf,主要原因就是这个,你不必再包头文件,不必记忆晦涩的标识符,只需要简单掌握printf的使用。

printf详解+用法

printf头文件:<stdio.h>
printf功能:向显示器进行格式化控制标准输出。
printf函数声明:

int printf ( const char * format, ... );
  • 1

format是格式化控制的字符串,后面…是要被格式化输出的参数。
一个格式化控制的字符串最多具有以下信息:
%[flags][width][.precision][length]specifier
我们主要需要掌握的就是flags(标记),width(宽度),.precision(精度),specifier(分类符)。
注意:要按顺序控制。

specifier

主要需要掌握,下面实例中的几种。

#include<stdio.h>
//因为没用C++新语法,所以不包C++头文件也是完全可以的

int main()
{
	//\n是转移字符用来换行的,除了格式化控制字符,字符串里的其它字符也会被输出
	printf("%d\n", 1);//d
	printf("%i\n", 2);//i,d和i都是用来格式化有符号十进制整型输出的,使用效果一样
	printf("%u\n", -1);//u是用来格式化无符号整型输出的
	printf("%o\n", 9);//o是用来格式化无符号八进制数的
	printf("%x\n", 17);//x是用来格式化无符号十六进制数的
	
	printf("%f\n", 3.14f);//f是用来格式化十进制单精度浮点型的
	printf("%lf\n", 3.1415926);//lf是用来格式化十进制双精度浮点型的
	printf("%e\n", 520.1314);//e是用来格式化为科学计数法输出的

	printf("%c\n", 'a');//c是用来格式化单字符的
	printf("%s\n", "Hello C");//s是用来格式化字符串的

	int a = 0;
	printf("%p\n", &a);//p是用来格式化指针地址的
	
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

输出实例

width

宽度格式化控制就只有这两种。

#include <iostream>
int main()
{
	printf("%3d\n", 1);//3是输出的字符宽度控制,默认右对齐,当原应输出字符数目不及3个时,用空格补充
	printf("%3d\n", 1314);//原应输出字符数目超过3个,则正常输出

	printf("%*d\n", 3, 1);//*代表需要多传一个参数,这个参数用来控制输出字符宽度,比如这里就是3
	
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

输出实例

flags

我们可以主要掌握以下几种

#include <iostream>
int main()
{
	printf("%-3d\n", 1);//将默认右对齐改为左对齐
	printf("%+d\n", 1);//强制给输出加上正负号,默认情况下只有负数才加负号
	printf("%-+3d\n", 1);//可以尝试综合理解下,这个格式化控制输出
	printf("% d\n", 1);//在输出的字符前,增加一个空格

	printf("%#o\n", 9);//将8进制或者16进制等省略的字符加上
	printf("%#x\n", 17);

	printf("%03d\n", 1);//用0补充宽度不够的字符,而非空格
	
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

输出实例

.precision

我们主要需要掌握以下几种使用

#include <iostream>
int main()
{
	//对于整数指定器(d,i,o,u,x):精度指定要写入的最小数字。
	//如果要写的值比这个数字短,结果会用前导零填充。
	//即使结果较长,该值也不会被截断。
	//精度为0意味着不写值0的字符。如果指定的周期没有明确的精度值,则假定为0。
	printf("%.3d\n", 1);
	printf("%.3d\n", 1314);
	printf("%d\n", 0001);
	//对于f和lf指定器:这是要在小数点后打印的数字(默认为6)。
	printf("%.3lf\n", 3.1415926);
	//对于s:这是要打印的最大字符数。默认情况下,所有字符都被打印,直到遇到结束的空字符。
	printf("%s\n", "hello world");
	printf("%.5s\n", "hello world");

	printf("%.*d\n",3, 1);//多传一个参数用来代表控制精度,其它和上面一样
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

输出实例


在复杂的格式化控制上,printf确实比cout好用,希望以上能帮助到你。
码字不容易,欢迎关注、点赞、收藏、评论、转发。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/64783
推荐阅读
相关标签
  

闽ICP备14008679号