格式化输入输出
- 格式化输入输出
- %[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的返回值,从而了解程序运行中是否存在问题