格式化输入输出

发布于:2022-12-24 ⋅ 阅读:(130) ⋅ 点赞:(0)

1 格式化输入

使用不同的占位符结构,进行各种需求的输入。对应的使用方式如下表所示:

%[flag]type
flag 含义
* 跳过
number 输入最大字符数
hh char
h short
l long,double
ll long
L long double

*号的作用是跳过该输入,例子如下:

#include<stdio.h>

void main(void)
{
    int num;
    scanf("%*d%d",&num);
    printf("%d",num);
}

输入如下所示:

123
456

输出如下所示:

456

即代码跳过了123,将456放进了num的内存中。

用数字来控制输入的字符数在字符串的输入输出章节已有介绍和引用,此处不再加以赘述。

hh的功能是以char的格式输入,其他的同理。

%[flag]type
type 含义
d int
i 整数,可以为十六进制或八进制
u unsigned int
o 八进制
x 十六进制
a,e,f,g float
c char
s 字符串
[...] 所允许的字符
p 指针

其中,%d与%i都可以实现整型变量的输入,但是%i更为灵活,可以根据实际情况输入十进制、八进制和十六进制。代码如下:

#include<stdio.h>

void main(void)
{
    int num0,num1,num2;
    scanf("%i",&num0);
    scanf("%i",&num1);
    scanf("%i",&num2);
    printf("num0 is %d\n",num0);
    printf("num1 is %d\n",num1);
    printf("num2 is %d\n",num2);
}

输入:

123
0x12
012

输出如下:

num0 is 123
num1 is 18
num2 is 10

2 格式化输出

使用不同的占位符结构,进行各种需求的输出。对应的使用方式如下表所示:

%[flag][width][.prec][hlL]type
flag 含义
- 左对齐
+ 在前面放+或-
(space) 正整数留空
0 0填充

示例代码如下

#include<stdio.h>

void main(void)
{
    printf("%8d\n",12345);
    printf("%-8d\n",12345);
    printf("%+d\n",12345);
    printf("%+d\n",-12345);
    printf("% d\n",12345);
    printf("%d\n",12345);
    printf("%09d\n",12345);
}

输出结果如下:

   12345
12345   
+12345
-12345
 12345
12345
000012345
%[flag][width][.prec][hlL]type
width或prec 含义
number 最小字符数
* 用参数定义字符数
.number 小数点后的位数
.* 用参数定义小数点后的位数

示例代码如下:

#include<stdio.h>

void main(void)
{
    int num0=10,num1=4;
    printf("%8.3f\n",45.25);
    printf("%*.*f\n",num0,num1,45.25);
}

输出如下:

  45.250
   45.2500
%[flag][width][.prec][hlL]type
类型修饰 含义
hh 一个字节
h short
l long
ll long long
L long double

hh的功能是以一个字节的形式来输出,其他的以此类推。

%[flag][width][.prec][hlL]type
type 用于
i或d int
u unsigned int
o 八进制
x 十六进制
X 字母大写的十六进制
f或F float
e或E 指数
g或G float
a或A 十六进制浮点
c char
s 字符串
p 指针
n 读入/写出的个数

其中%n是用来计算输出字符的个数的。

3 输入输出函数的返回值

标准输入函数的返回值为输入变量的个数,标准输出函数的返回值为输出字符的个数。例如:

#include<stdio.h>

void main(void)
{
    int num0=0,num1=0;
    int a=0,b=0;
    num0=scanf("%d%d",&a,&b);
    num1=printf("%d\n",a);
    printf("num0=%d,num1=%d",num0,num1);
}

输入:

1234
5678

输出为:

1234
num0=2,num1=5

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到