目录
前言
一: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 .
}
【输出结果】