sprintf()函数的介绍及其用法

目录

前言

一:sprintf()函数的介绍

二:sprintf()函数的原型

三:sprintf()函数的用法

1.控制输出格式

2.将数字转化成字符串

3.拼接字符串

4.当然,也可以拼接多个数值

5.sprintf()的返回值


前言

sprintf()函数是 C 语言中比较常用的一个函数,当然 C++ 中也是可以使用的,只是需要注意一些格式。

一:sprintf()函数的介绍

sprintf()函数的头文件是 <stdio.h>,当我们需要格式化的数据写入字符串时,它是一个非常有用的工具,可以动态的创建字符串。sprintf()函数将结果存储在字符数组中。sprintf()函数和 printf()函数功能相似,但是 printf()函数打印输出到屏幕上,而 sprintf()函数打印输出到字符串中。

二:sprintf()函数的原型

sprintf(char *str,const char*format,...); 

sprintf()括号中有3个参数:

str:要写入的字符串的指针

format:包含格式控制符的字符串,用于指定输出的格式

. . .  :可变参数列表。根据格式化字符串中指定的格式进行输出

三:sprintf()函数的用法

1.控制输出格式

这个功能是和 printf()差不多的,这里只是为了展示它的功能,一般情况下控制输出格式直接用 printf()就可以了。 

【代码如下】

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	double a=37.12345;
	char ch[100];
	sprintf(ch,"%.3f",a);
//其实这里多此一举了,直接用 printf 就可以了,但这里为了展示 sprintf()的用法
	printf("%s",ch);
}

【运行结果】

2.将数字转化成字符串

注意,这里的数字可以是 int 型,也可以是 double、float 型。所以这个函数还是很方便的,(因为像字符串转化成数字的几个函数,比如 atoi()函数,它是只能实现字符串转化成 int 型整数,如果要转化成小数,就不可以,需要用 atof()函数,我之前有一篇文章专门讲的字符串与数字的转化,想要了解的可以去看看)

【代码如下】

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	int num=37829;
	char ch[100];
	sprintf(ch,"%d",num);
	printf("%s",ch);
//注意,输出的是字符串,格式字符要随之改变,否则会输出错误
}

【运行结果】

3.拼接字符串

#include <stdio.h>
using namespace std;
int main()
{
	char ch1[]="abcd";
	char ch2[]="efgh";
	char ch3[100];
	sprintf(ch3,"%s%s",ch1,ch2);
	printf("ch1在前: %s\n",ch3);

////ch1,ch2的位置不同,拼接的顺序也就不同

	sprintf(ch3,"%s%s",ch2,ch1);
	printf("ch2在前: %s",ch3);
}

【运行结果】

4.当然,也可以拼接多个数值

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	int a=123,b=456;
	char ch[100];
	sprintf(ch,"%d%d",a,b);
	printf("a在前: %s\n",ch);

//注意,printf输出时,格式字符始终是 %s,因为始终是存储在字符串数组中的

	sprintf(ch,"%d%d",b,a);
	printf("b在前: %s",ch);
}

【运行结果】

5.sprintf()的返回值

sprintf()函数的返回值是字符串数组中的字符个数,具体看情况分析,不过一般还是用 strlen(ch)直接得到字符串数组的大小,这样更简洁方便。

【代码如下】

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	double a=37.12345;
	char ch[100];
	printf("%d",sprintf(ch,"%f",a));
//返回值是 int 型数,注意格式字符是 %d .
}

【输出结果】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.jc7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值