格式化输入输出

输入 - printf

printf("%[flags][width][.prec][hlL]type...",参数表...);

返回值

输出的字符数

flag

Flag 含义
- 左对齐
+ 给一个正数强制加一个+号
(space) 正数留空
0 左边补零,不能和左对齐同时使用

width和prec

width 含义
number 最小字符数(整个输出,包括小数点和小数点后的数)
* 下一个参数是字符数
prec 含义
.number 小数点后的位数
.* 下一个参数是小数点后的位数
/* 关于"*" */
printf("%*d",6,10); // 6会被填到*的位置,然后按%6d的格式print 10

修饰类型

修饰类型 含义
hh 单个字节
h short
l long
ll long long
L long double

type

type 用于 type 用于
i 或 d int g float
u unsigned int G float
o 八进制 a 或 A 16进制浮点数
x 十六进制 c char
X 字母大写的十六进制 s string
f 或 F float.6 P 指针
e 或 E 指数 n 读入/写出的个数

关于 %n 的一个例子:

int num = 0;
printf("12345%s%n\n","hello",&num);
printf("%d\n",num);

输出结果:

12345hello
10

输出 - scanf

scanf("%[flag]type...",参数表...);

返回值

读入的项目数(不是读入的字符数)

flag

flag 含义 flag 含义
* 跳过 l long, double
数字 最大字符数 ll long long
hh char L long double
h short

关于 * 的一个例子:

int num = 0;
scanf("%*d%d",&num);
printf("%d\n",num);

输入:

123 456 

输出:

456

type

type 用于 type 用于
d int s 字符串(单词)
i 正数,可能为非十进制 [...] 所允许的字符
u unsigned int p 指针
o 八进制
x 十六进制
a,e,f,g float
c char

关于 i 的一个例子

int num = 0;
for(int i = 0; i < 3; i++){
    scanf("%i",&num);
    printf("%d\n",num);
}

输入:

12
012
0x12

输出:

12
10
18
最后修改:2023 年 04 月 28 日
如果觉得我的文章对你有用,请随意赞赏