c格式化输入输出详解

标准化输入输出函数中%号后面的内容一直是个谜。 这里尝试总计一下。 两个函数可以放的部分如下:

printf() %[flags][width][.prec][hlL]type
scanf() %[flags]type

scanf()简单一些。

printf()

1 flag
flag含义
-左对齐
+在前面放符号(+或-)
(space)正数留空
00填充
#十六进制、八进制前分别添加标识符0x, 0
2 width
width含义
number最小字符数(整个输出的长度)
*下一个参数是字符数
.number小数点后面的位数
.*下一个参数是小数点后的位数
3 .pre
.pre含义
.number小数点后面的位数
.*下一个参数是小数点后的位数
printf("%- 6d\n",123);// - 左对齐, 整数前填充空格,, 输出6位 ,  
 123
printf("%+06d\n",-123); // 加符号, 0填充,。
-00123
printf("%+08.2f\n",123.1); // 加符号, 0填充, 共八个字符, 小数点后2位, 输出浮点型。
+0123.10
printf("%#+08.2x\n",12); // 添加进制标识符
    0x0c

不加-默认右对齐,显然左对齐之后不能使用0填充。 同一层级的语法之间顺序无关。

4 修饰符
类型修饰含义
hh单个字节
hshort
llong
lllong
Llong doubel
5 类型
类型含义
i 或者dint
uunsigned int
o八进制
x十六进制
X大写字母的十六进制
f或Ffloat , 6
e或E指数
gfloat
Gfloat
a或A十六进制浮点
cchar
s字符串
p指针
n输出或输出的个数
int num = 0; 
printf("hello world%n\n",&num); //%n的使用, 本地编译器不能使用%n, 在线编译器可以
printf("%d\n",num);
// 输出 
hello world
11

scanf()

1 scanf
flag含义
*跳过
number最大字符数
hhchar
hshort
llong, double
lllong long
Llong double
2 scanf
type含义
dint
i整数,可能为十六进制或八进制
uunsigned int
o八进制
x十六进制
a,e,f,gfloat
cchar
s字符串
[…]所允许的字符
p指针
printf() 和scanf()的返回值

prinff() 返回输出的字符数
scanf() 返回输入的项目数

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值