C语言中scanf和printf格式化输入输出

scanf

  • % [flag] type

一、[flag](格式部分)

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

1、 跳过(*)

	scanf("%*d%d%d",&a,&b,&c);
    printf("%d+%d\n",a,b);
    printf("%d+%d+%d\n",a,b,c);

在第一行输入语句,a对应的%d中间加上*。由对应的输出可以知道,a的地址中存入数字是22,b的地址中存入是33。c的地址中存入是系统分配的数值。
在这里插入图片描述
其他就不做一一解释了,我们平时做的练习足够一眼看出其用法。也有的举例与printf放在一起。

printf

  • % [ flags ] [width] [.prec] [hIL] type

一、[flag](格式部分)

flag 含义
- 左对齐
+ 在前面放+或-
(space) 正数留空
0 0填充

1、 左对齐(-)

    printf("%9d\n",123);
    printf("%-9d\n",123);

运行结果如下图。第一行和第二行输出都有九个空格,但是第二行是靠左对齐。
左对齐

2、 在前面放+或-(+)

    printf("%+9d\n",123);///强制输出加号
    printf("%-+9d\n",123);

在这里插入图片描述

3、 正数留空(space)

这个就是字面意思。

printf("%9d\n",123);

在这里插入图片描述

4、 0填充(0)

    printf("%09d\n",123);///0用于填充
    printf("%-9d\n",123);

在这里插入图片描述
二、[width]或[.prec](精度部分)

width或prec 含义
number 最小字符数
* 下一个参数是字符数
.number 小数点后的位数
.* 下一个参数是小数点后的位数

1、 number / .number

printf("%9.2f\n",123.0);

输出语句中"9"表示整个输出占据九个位置,".2"表示小数点后保留两位数字。
在这里插入图片描述

2、 *或 . *

    printf("%*d\n",6,123);
    printf("%.*f\n",4,123.0);

第一行语句:‘6’对应于’*’,表示输出整体占据6个位置。
第二行语句:‘4’对应于’.’,表示小数点后的有4个位置。

在这里插入图片描述

三、[hlL](修饰部分)

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

1、 hh

printf("%hhd \n",12345);

这里我们只讲"hh"部分,因为其他几个在初学时都已经熟练的掌握运用。
输出语句的123456转化为16进制是0x3039,只取39再转化为10进制是57。
在这里插入图片描述
四、type(类型)
直接跳转到我之前写的一篇文章,包含了几乎全部的类型,C语言输入输出那些事

猜你喜欢

转载自blog.csdn.net/weixin_41377182/article/details/104310536