目录
引言:在本文会详细介绍占位符和printf的输出格式。包括怎么限定宽度、正负号、限定小数位数以及怎么输出部分字符串。
一:printf
1.1基本用法
作用:打印信息在屏幕上
意思:printf打印,format格式(按格式打印)
2:printf() 是在标准库的头⽂件 stdio.h 定义的。使⽤这个函数之前,必须在源码⽂件头部引⼊这
个头⽂件。
#include <stdio.h>
int main()
{
printf("hello");
printf("hello\n");
printf("abcd\nfe");
//换行的输出结果不同
return 0;
}
1.2占位符
语法格式==>%类型
1:
#include<stdio.h>
int main()
{
printf("%d个苹果\n", 3);//整数3替换%d
return 0;
}
占位符的这个位置可以用其他值来代替。
2. printf() 参数与占位符是⼀⼀对应关系,如果有 n 个占位符, printf() 的参数就应该有 n +
1 个。如果参数个数少于对应的占位符, printf() 可能会输出内存中的任意值。
#include<stdio.h>
int main()
{
printf("%s says it is %d o'clock\n", "lisi", 21);
//可以使用多个占位符
return 0;
}
如图,有两个占位符,三个参数。
1.3占位符列举
•%a :⼗六进制浮点数,字⺟输出为⼩写。
• %A :⼗六进制浮点数,字⺟输出为⼤写。
• %c :字符。
• %d :⼗进制整数。
• %e :使⽤科学计数法的浮点数,指数部分的 e 为⼩写。
• %E :使⽤科学计数法的浮点数,指数部分的 E 为⼤写。
• %i :整数,基本等同于 %d 。
• %f :⼩数(包含 float 类型和 double 类型)。//float-%f double-%lf
• %g :6个有效数字的浮点数。整数部分⼀旦超过6位,就会⾃动转为科学计数法,指数部分的 e 为⼩写。
• %G :等同于 %g ,唯⼀的区别是指数部分的 E 为⼤写。
• %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 :指针(⽤来打印地址)。
• %s :字符串。
• %u :⽆符号整数(unsigned int)。
• %x :⼗六进制整数。
• %zd : size_t 类型。
• %% :输出⼀个百分号。
1.4 输出格式
printf() 可以定制占位符的输出格式。
1 限定宽度 |
2 总是显⽰正负号 |
3 限定⼩数位数 |
4 输出部分字符串 |
1.4.1限定宽度
#include<stdio.h>
int main()
{
printf("%5d\n", 123);
//5指最小宽度,向右对齐,不够5位就补空格
printf("%-5d\n", 123);//左对齐
return 0;
}
printf() 允许限定占位符的最⼩宽度。
对于⼩数,这个限定符会限制所有数字的最⼩显⽰宽度。
#include<stdio.h>
int main()
{
printf("%lf\n", 123.45);
printf("%12lf\n", 123.45);
//小数点后面有6位,12是宽度,右对齐
return 0;
}
1.4.2总是显⽰正负号
通常情况下,printf()只会打印负号。希望显示正负号,就在%后加+号。
如图: %+d 可以确保输出的数值,总是带有正负号。
1.4.3 限定⼩数位数
输出⼩数时,有时希望限定⼩数的位数。
#include<stdio.h>
int main()
{
printf("%.3lf\n", 123.45);//输出123.450
return 0;
}
如果希望⼩数点后⾯输出3位( 123.450 ),占位符就要写成 %.3lf 。
如果是5位(123.45000),就要%.5lf。
这种写法可以与限定宽度占位符,结合使⽤。
#include<stdio.h>
int main()
{
printf("%12.6lf\n", 123.45);//输出12宽度,6位小数
return 0;
}
最⼩宽度和⼩数位数这两个限定值,都可以⽤ * 代替,通过 printf() 的参数传⼊。
等同于printf(“%12.1lf\n”,123.45);
1.4.4 输出部分字符串
注意:是字符串
%s 占位符⽤来输出字符串,默认是全部输出。
如果只想输出开头的部分,可以⽤ %.[m]s 指定输出的⻓度,其中 [m] 代表⼀个数字,表⽰所要输出的⻓度。
#include<stdio.h>
int main()
{
//输出abcde
printf("%.5s\n", "abcdef");
return 0;
}