格式化输入输出
-
printf
- %[flags] [width] [.prec] [HIL] type
-
scanf
#include<stdio.h>
int main(int argc, int const *argv[])
{
printf("%9d\n", 123);
printf("%-9d\n", 123);
return 0;
}
123
123
%[flags] [width] [.prec] [HIL] type
Flag |
含义 |
- |
左对齐 |
+ |
在前面放+或者- |
(space) |
正数留空 |
0 |
0填充 |
width或prec |
含义 |
number |
最小字符数 |
* |
下一个参数是字符数 |
.number |
小数点后的位数 |
.* |
下一个参数是小数点后的位数 |
// number 最小字符数
#include<stdio.h>
int main(int argc, char const *argv[])
{
printf("%9.2d\n", 123.0);
return 0;
}
123.00
// * 下一个参数是字符数
#include<stdio.h>
int main(int argc, char const *argv[])
{
printf("%*d\n", 6, 123);
printf("%9.2f\n", 123.0);
return 0;
}
123
123.00
类型修饰 |
含义 |
hh |
单个字节 |
h |
short |
l |
long |
ll |
long long |
L |
long double |
type |
用于 |
type |
用于 |
i或d |
int |
g |
float |
u |
unsigned int |
G |
float |
o |
八进制 |
a或A |
十六进制浮点 |
x |
十六进制 |
c |
char |
X |
字母大写的十六进制 |
s |
字符串 |
f或F |
float,6 |
p |
指针 |
e或E |
指数 |
|
|
scanf:%[flag] [type]
flag |
含义 |
flag |
含义 |
* |
跳过 |
l |
long,double |
数字 |
最大字符 |
ll |
long long |
hh |
char |
L |
long double |
h |
short |
|
|
printf和scanf的返回值
- 读入的项目数
- 输出的字符数
- 在要求严格的程序中,应该判断每次调用scanf或printf的返回值,从而了解程序运行中是否存在问题
#include<stdio.h>
int main(int argc, char const *argv[])
{
int num;
int i1 = scanf("%i", &num);
int i2 = printf("%d\n", num);
printf("%d:%d\n", i1, i2);
return 0;
}
12
12
1:3
网友评论