C++格式化输入输出

2022-10-31 09:53:33 浏览数 (1)

今天开始肝c 了,啊这可是我几百年没碰过的玩意儿。之前一直在安卓上面搞来搞去,暑假到现在就一直写python。python给我的感觉就是相对于c ,一些代码没有那么又长又臭了,但是感觉那个运行速度有点低。然后开学了,还是得把c 学好才行啊。于是乎我就把

感觉c 的格式化输入输出和python的格式化输入输出很类似,在某些格式符的使用上还有正则表达式那种匹配的感觉,对于学过正则的同学来说,这个应该不难。

C 格式化输入输出用到的是cstdio中的scanf和printf函数,这对于我们从输入的数据中获取我们想要的信息很有帮助。(啊感觉这不就是对输入的信息进行了正则匹配吗?)输出的时候也可以用比较短的代码就能搞定,简直nice到不行。

记得初中信息学老师讲过,scanf和printf相较于cin、cout,在大量数据输出的时候好像比较占优势?(如果我没记错的话)

然后就讲下格式符的使用吧。

scanf函数

*格式符的使用

*格式符用来表示输入的量不赋值给一个变量

代码语言:javascript复制
#include<cstdio>

int main()
{
	int a,b;
	scanf("%d%*d%d", &a,&b);
	printf("a=%d,b=%dn", a, b);
}

在上面这个例子中,如果我们输入 1 2 3

那么执行结果将会是

代码语言:javascript复制
a=1,b=3

域宽格式符的使用

域宽格式符指定了输入列所占的列宽,域宽是一个整数。

代码语言:javascript复制
#include<cstdio>

int main()
{
	int a, b;
	scanf("MM", &a, &b);
	printf("a=%d,b=%dn", a, b); 
}

当我们输入123456789时,就会有如下的输出:

代码语言:javascript复制
a=1234,b=5678

%s格式符的使用

%s是匹配字符串的意思

代码语言:javascript复制
#include<cstdio>
int main()
{
	char st[40];
	scanf("%s", st);
	printf("Your input is:%sn", st);
}

当我们输入abc hello时,程序将会输出

代码语言:javascript复制
Your input is:abc

我们发现,它并没有匹配hello,那么scanf的%s匹配应该是到空格就停止了。

非格式符的使用

其实我觉得格式化输入就是一个类似于正则匹配的东西,所以非格式符很自然就是作为一个简单的匹配条件罢了。

代码语言:javascript复制
#include<cstdio>
int main()
{
	int a,b,c;
	scanf("%d,%d,%d",&a, &b, &c);
	printf("a=%d,b=%d,c=%d", a, b, c);
}//本例子中,应该以非格式字符','作为间隔符 

在这个例子之中,我们应该输入5,6,7

然后执行结果应该是

代码语言:javascript复制
a=5,b=6,c=7

printf函数

这里就着重讲讲d、f、s格式符

d格式符的用法,举个例子看的很清楚。

%ld(小写字母l)用来输出长整型数据。

代码语言:javascript复制
#include<cstdio>

int main()
{
	int i = 1;
	long j = 123;
	printf("%d,-,d,%ld,%-4ld,ld",i,i,i,j,j,j);
}

执行结果

代码语言:javascript复制
1, 1,001,123,123 ,00123

参数

说明

%f

按实数格式输出,整数部分按实际位数输出,6位小数

%m.nf

总位数m(含小数点),其中有n位小数

%-m.nf

同上,左对齐

参数

说明

%s

按实际宽度输出一个字符串

%ms

m指定宽度(不足时补空格,大于时按实际宽度输出)

%-ms

左对齐,不足时右补空格

%m.ns

输出占m个字符位置,其中字符数最多n个,左补空格

%-m.ns

同上,右补空格

0 人点赞