目录
1.1 基本用法
printf()的作用是将参数文本输出到屏幕。它名字里面的f代表format(格式化),表示可以定制输出文本的格式。
#include<stdio.h>
int main()
{
printf("Hello World");
return 0;
}
上面命令会在屏幕上输出一行文字“Hello World”。
为了让光标移到下一行的开头,可以在输出文本的结尾,添加一个换行符\n。
printf("Hello World\n");
如果文本内部有换行,也是通过插入换行符来实现。如下方代码:
printf("Hello\nWorld\n");
printf()是在标准库的头文件stdio.h定义的。使用这个函数之前,必须在源码文件头部引入这个头文件。
1.2 占位符
printf()可以在输出文本中指定占位符。
所谓"占位符",就是在这个位置可以用其他值代入。
#include<stdio.h>
int main()
{
printf("There are %d apples\n",3);
return 0;
}
上面示例中,There are %d apples\n是输出文本,里面的%d就是占位符,表示这个位置要用其他值来替换。占位符的第一个字符一律为百分号%,第二个字符表示占位符的类型,%d表示这里代入的值必须是一个整数。
printf()的第二个参数就是替换占位符的位置,上面的例子是整数3替换%d。执行后的输出结果是There are 3 apples。
输出文本里面可以使用多个占位符。
#include<stdio.h>
int main()
{
printf("%s says it is %d o'clock\n","Lisi",21);
return 0;
}
执行后的输出结果是Lisi says it is 21 o'clock。
1.3 占位符列举
%c:字符
%d:十进制整数
%f:小数(包含float类型和double类型)
%hd:十进制short int类型
%Lf:long double类型浮点数
%p:指针
%s:字符串
%u:无符号整数(unsigned int)
%x:十六进制整数
%zd:size_t类型
%%:输出一个百分号
1.4 输出格式
1.1.4.1 限定宽度
printf()允许限定占位符的最小宽度。
#include<stdio.h>
int main()
{
printf("%5d\n",123);//输出为“ 123”
return 0;
}
上面示例中,%5d表示这个占位符的宽度至少是5位。如果不满5位,对应的值的前面会填加空格。输出的值默认是右对齐,即输出内容前面会有空格;如果希望改成左对齐,在输出内容后面添加空格,可以在占位符的%的后面插入一个 - 号。
#include<stdio.h>
int main()
{
printf("%-5d\n",123);//输出为“123 ”
return 0;
}
对于小数,这个限定符会限制所有数字的最小显示宽度。
//输出“ 123.450000”
#include<stdio.h>
int main()
{
printf("%12f\n",123.45);
return 0;
}
上面示例中,%12f表示输出的浮点数最少要占据12位。由于小数的默认显示精度是小数点后6位,所以123.45输出结果的头部会添加2个空格。
1.1.4.2 总是显示正负号
默认情况下,printf()不对正数显示 + 号,只对负数显示 - 号。如果想让正数也输出 + 号,可以在占位符的%号后边加一个 + 。
#include<stdio.h>
int main()
{
printf("%+d\n",12);//输出 +12
printf("%+d\n",-12);//输出 -12
return 0;
}
上面示例中,%+d可以确保输出的数值,总是带有正负号。
1.1.4.3 限定小数位数
输出小数时,有时希望限定小数的位数。举例来说,希望小数点后面只保留两位,占位符可以写成%.2f。
printf("Number is %.2f\n", 0.5);//输出0.50
最小宽度和小数位数这两个限定值,都可以用 * 代替,通过printf()的参数传入。
printf("%*.*f\n", 6, 2, 0.5);//输出 0.50
1.1.4.4 输出部分字符串
%s占位符用来输出字符串,默认是全部输出。如果只想输出开头部分,可以用%.[m]s指定输出的长度,其中[m]代表一个数字,表示所要输出的长度。
printf("%.5s\n", "hello world");//输出hello