C/C++ | 关于sscanf以及sprintf函数

sscanf、sprintf简介

sscanf以及sprintf是处理字符串问题的利器,熟练的掌握这两个函数可以在一些算法竞赛中取得一定的优势。首先,sscanf在单词上可以理解为string scanf,sprintf则可以理解为string printf。

现在,我们再来看看scanf以及printf。

如果我们要在屏幕上输入一个int型变量n,并且将int型变量n输出到屏幕上,则可以这样表示:

	scanf("%d",&n);
	printf("%d",n);

实际上,scanf以及printf还可以这样来理解:

	scanf(screen,"%d",&n);
	printf(screen,"%d",n);

scanf的意思就是在屏幕screen中输入一个%d格式的变量n(注意此时是从左往右),printf的意思则是将变量n以%d的格式在屏幕screen中输出(从右往左)

sscanf与sprintf的语法格式

现在我们再来看看sscanf与sprintf这两个函数的用法。类似于scanf与printf,只需将上述的screen改成str就可以了(此时的str定义为一个字符数组str[100])

	sscanf(str,"%d",&n);
	sprintf(str,"%d",n);

上面sscanf的作用是把字符数组str以%d的格式写到n中(此时也是从左向右)。sprintf的作用则是把n以%d的格式写到字符数组str中(从右向左)。值得注意的是str部分只能是字符数组,不可以是字符以及其它形式。format格式部分可以是任何格式,根据问题需要来定义格式。现在给出一个实例,加深对sscanf与sprintf的理解,建议自己亲手操作一番。

#include <stdio.h> 

int main()
{
	int n1,n2=666;
	char str[100]="123";
	sscanf(str,"%d",&n1);
	printf("%d\n",n1);
	sprintf(str,"%d",n2);
	printf("%s",str);
	return 0;
}

输出结果为:

123
666

sscanf与sprintf的复杂格式的输入与输出

事实上,sscanf与sprintf可以使用像scanf与printf那样进行复杂的输入输出。例如下面代码中使用sscanf把str按照"%d:%lf"的格式写到int型变量n1,double型变量n2中:

#include <stdio.h> 

int main()
{
	int n1;
	double n2;
	char str[100]="123:698";
	sscanf(str,"%d:%lf",&n1,&n2);
	printf("%d\n%lf",n1,n2);
	return 0;
}

此时输出为:

123
698.000000

再例如下面代码中使用sprintf把int型变量n1,double型变量n2以%d:%lf的格式写入到字符数组str中:

#include <stdio.h> 

int main()
{
	int n1=123;
	double n2=698;
	char str[100];
	sprintf(str,"%d:%lf",n1,n2);
	printf("%s",str);
	return 0;
}

输出结果为:

123:698.000000

最后值得一提的是,sscanf也支持正则表达式,此处不作深入研究。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值