【C语言】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, ... );

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

specifier

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

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

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

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

	int a = 0;
	printf("%pn", &a);//p是用来格式化指针地址的
	
	return 0;
}

输出实例

width

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

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

	printf("%*dn", 3, 1);//*代表需要多传一个参数,这个参数用来控制输出字符宽度,比如这里就是3
	
	return 0;
}

输出实例

flags

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

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

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

	printf("%03dn", 1);//用0补充宽度不够的字符,而非空格
	
	return 0;
}

输出实例

.precision

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

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

	printf("%.*dn",3, 1);//多传一个参数用来代表控制精度,其它和上面一样
	return 0;
}

输出实例


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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>