格式化输入输出
- 格式化输入输出
- %[flags][width][.prec][hIL]type
- scanf:%[flag]type
- printf和scanf的返回值
格式化输入输出
%[flags][width][.prec][hIL]type
Flag | 含义 |
---|
- | 左对齐 |
+ | 在前面放+或- |
(space) | 正数留空 |
0 | 0填充 |
左对齐#include int main(int argc,char const *argv[])
{printf("%9d\n",123);printf("%-9d\n",123);return 0;
}

在前面放+或-#include int main(int argc,char const *argv[])
{printf("%+9d\n",123);printf("%-+9d\n",-123);return 0;
}

0填充#include int main(int argc,char const *argv[])
{printf("%09d\n",123);printf("%-9d\n",-123);return 0;
}

width或prec | 含义 |
---|
number | 最小字符数 |
* | 下一个参数是字符数 |
.number | 小数点后的位数 |
.* | 下一个参数是小数点后的位数 |
#include int main(int argc,char const *argv[])
{printf("%9.2f\n",123.0);return 0;
}9:一共有九位
.2:小数点后两位

#include int main(int argc,char const *argv[])
{printf("%*d\n",6,123);printf("%9.2f\n",123.0);return 0;
}

类型修饰 | 含义 |
---|
hh | 单个字节 |
h | short |
l | long |
ll | long long |
L | long double |
type | 用于 |
---|
i或d | int |
u | unsigned int |
o | 八进制 |
x | 十六进制 |
X | 字母大写的十六进制 |
f或F | float,6 |
e或E | 指数 |
g | float |
G | float |
a或A | 十六进制浮点 |
c | char |
s | 字符串 |
p | 指针 |
n | 读入/写出的个数 |
scanf:%[flag]type
flag | 含义 |
---|
* | 跳过 |
数字 | 最大字符数 |
hh | char |
h | short |
l | long,double |
ll | long long |
L | long double |
printf和scanf的返回值
- 读入的项目数
- 输出的字符数
- 在要求严格的程序中,应该判断每次调用scanf或printf的返回值,从而了解程序运行中是否存在问题