赞
踩
printf是用来标准输出(显示器)的函数,有人一定会说“我会用cout,为什么要学习prinf?”。确实cout在部分使用上比printf方便,因为不用一直主动格式化控制输出,利用C++的新语法函数重载,让编译器完成了该部分工作。按道理来说,C中的printf是C++的cout的祖宗,我们最先该掌握的也是printf才是(C++是由C质变产生的,C++兼容C这点一定要知道)。
当你曾用cout格式控制过小数输出,就明白cout的痛苦了吧。我们之所以要学习printf,主要原因就是这个,你不必再包头文件,不必记忆晦涩的标识符,只需要简单掌握printf的使用。
printf头文件:<stdio.h>
printf功能:向显示器进行格式化控制标准输出。
printf函数声明:
int printf ( const char * format, ... );
format是格式化控制的字符串,后面…是要被格式化输出的参数。
一个格式化控制的字符串最多具有以下信息:
%[flags][width][.precision][length]specifier
我们主要需要掌握的就是flags(标记),width(宽度),.precision(精度),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; }
宽度格式化控制就只有这两种。
#include <iostream>
int main()
{
printf("%3d\n", 1);//3是输出的字符宽度控制,默认右对齐,当原应输出字符数目不及3个时,用空格补充
printf("%3d\n", 1314);//原应输出字符数目超过3个,则正常输出
printf("%*d\n", 3, 1);//*代表需要多传一个参数,这个参数用来控制输出字符宽度,比如这里就是3
return 0;
}
我们可以主要掌握以下几种
#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;
}
我们主要需要掌握以下几种使用
#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; }
在复杂的格式化控制上,printf确实比cout好用,希望以上能帮助到你。
码字不容易,欢迎关注、点赞、收藏、评论、转发。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。