1.基本使用方法
printf()函数的作用是将参数输出到屏幕。其末尾的“f”代表format 即格式化,表示可以输出文本的格式。
printf()函数是在标准库中的头文件stdio.h当中定义的。使用这和函数时,必须在源码文件头部引入这个头文件。
形式如下。
#include<stdio.h>
int main()
{int x= 0;
printf("%d",x);
return 0;}
上面的命令会在屏幕上输出 类型为 int(整型)的变量x的值。
printf() 不会自动在行尾添加\n(换行符),运行结束以后,光标会停留在输出结束的位置,不会自动换行,如图所示。
所以为了让光标移到下一行开头,通常在末尾加入换行符\n。
2.占位符
printf()函数可以在输出文本中指定占位符。
通俗来讲,就是先占住位置,等准备好了再进去
在 <1.基本使用方法>代码中 %d便是占位符的其中一种,表示这个位置要用一个整形来替换
#include<stdio.h>
int main ()
{int x = 0;
printf("The number is %d\n ",x);
return 0;
}
如上代码当中 函数输出文本为“The number is %d\n”,输出的结果为 The number is 0,整数0替换掉了%d。
除了%d 以外还有许多种类,与c语言当中各种类型对应。
- %a:代替浮点数,输出十六进制浮点数,字母输出为小写。
- %A:代替浮点数,输出十六进制浮点数,字母输出为大写。
- %c:替换字符。char类型
- %d:十进制整型,代替int类型
- %e:使用科学计数法的浮点数,指数部分e为小写。
- %E:使用科学计数法的浮点数,指数部分E为大写。
- %i:代替整数,基本与%d相同
- %f:代替浮点型。默认打印小数点后六位。在printf() 中%f与%lf同等,但在scanf() 中double 必须用%lf,float 用%f。
- %g:代替有效数字为6个的浮点数。整数部分超过六位,自动跳转为科学计数法,指数部分e 为小写。
- %G:等同与%g,指数部分为大写。
- %hd:代替short int 类型,输出为十进制形式。
- %ho:代替short int 类型,输出为八进制形式。
- %hx:代替short int 类型,输出为十六进制形式。
- %hu:代替 unsigned short int 类型,输出为十进制形式。
- %ld:代替long int 类型,输出为十进制形式。
- %lo:代替long int 类型,输出为八进制形式。
- %lx:代替long int 类型,输出为十六进制形式。
- %lu:代替unsigned long int 类型,输出为十进制形式。
- %lld:代替long long int 类型,输出为十进制形式。
- %llo:代替long long int 类型,输出为八进制形式。
- %llx:代替long long int 类型,输出为十六进制形式。
- %llu:代替unsigned long long int 类型,输出为十进制形式。
- %le:代替long double 类型,输出为科学计数法形式
- %lf:代替 long double 类型。
- %n:已输出的字符串的数量。该占位符本身不输出,只将值存储在指定变量中。
- %o:代替整数,输出为八进制。
- %p:指针。
- %u:无符号整数。
- %x:十六进制整数。
- %zd:size_t类型。
- %%:输出百分号。
3.输出格式
printf()函数可以定制占位符的输出格式。
-
限定最小宽度
printf()函数可以限定输出的最小宽度。例如%7d,表示输出的值宽度为7,不满足七个的会用空格填充,默认右对齐。
如果需要左对齐,即在选定输出的内容后面加空格,形如%-7d即可。
-
限定小数部分的宽度,或者输出部分字符
对于小数的打印一般默认打印小数后六位,初始化小数位数不足时用零补足,但是有时候我们不需要那么多,或者需要更多时,占位符可以写成%.*f的形式,其中*代指需要精确的小数位数。超出部分四舍五入,位数不足则用零补足。
#include<stdio.h>
int main ()
{ double x = 1.23456;
printf("%f\n",x);
printf("%.3f\n",x);
printf("%.8f\n",x);
return 0 ;
}
如上代码运算结果如下。%.3f表示精确到第三位小数,所以输出为1.235,%.8f表示精确到第八位小数所以输出1.23456000。
这样的形式同样可以用在字符串中。表示从左开始输出限定长度字符串。对于%s 用来输出字符串时,默认为全部输出,但是有时候不需要那么多时,也可以写成%*s,其中*为一个数字,表示要输出的字符串长度。
#include<stdio.h>
int main ()
{
printf("%.3s",Love You);//打印Lov
return 0;
}
上述二者一起用
同样,限定最小宽度和限定小数部分可以一起使用。假如我需要输入一个数字并在电脑屏幕上打印它,要求输出的最小宽度为6,并且这个数值要精确到第3位小数。我可以这样写。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
double x = 0;
scanf("%lf",&x);
printf("%6.3f\n",x);
return 0;
}
另外的,最小宽度和精确位数也可以用*代替,后面可以一一对应变量,根据实际情况做出调整。代码可以写成这样。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
double a = 0;
int x = 0;
int y = 0;
scanf("%lf", &a);
scanf("%d", &x);
scanf("%d",&y);
printf("%*.*f\n",x,y,a);
return 0;
}
总是显示正负号
在默认情况下,printf()函数打印正数时一般会省略“+”号,而不省略“-”号,当需要打印出符号时,可在%后面添加“+”,代码如下
#include <stdio.h>
int main ()
{ int a = 2;
int b = -2;
printf("%+d\n",a);//+2
printf("%+d\n",b);//-2
return 0;
}
%+d可以确保每次打印都带上正负号。