首页 > 其他分享 >直接“printf”到char数组字符串——C语言snprintf函数

直接“printf”到char数组字符串——C语言snprintf函数

时间:2023-07-12 23:44:18浏览次数:36  
标签:snprintf int C语言 char 数组 printf 字符串

注:我写这个只是为了备注并介绍一下这个神器。有关它的更详细用法,互联网的各个角落都不缺少资料。

如果您和曾经的我一样是C语言的初学者,您有可能时常遇到那些“奇异”的字符串处理问题,例如,int里的数转成char数组字符串类型,在char数组中间插入或者删除什么东西,等等。要是采用传统方式这样操作相当令人头大,有时您可能会想要是有一个类似printf的函数能够直接输出到字符串里该多香。

事实上———确实有这么一个函数在。它叫snprintf。原型是:

#include<stdio.h>
int snprintf(char *str, size_t size, const char *format, ...);

用法即:将可变参数 “…” 按照format的格式格式化为字符串,然后再将其拷贝至str中。

仔细看看相当的好理解——就是比printf多了两个参数char *str和size_t size。这其中:

char *str就是该字符串数组的指针。直接输入其名称即可,规则如此。

size_t size是要写入内容的长度。超出该长度-1的内容将被加上‘\0’截断掉。如果想写满整个数组,该参数直接填sizeof(数组名)即可。

后面的参数和printf的用法完全相同。双引号内格式,后面是格式引用。就这样,我们就做到了直接把要写的东西“printf”到char数组里。

来试试看:

#include<stdio.h>
using namespace std;

int main() {
	char test[20];
	int a = 33;
	int b = 25;
	char input[5] = "abcd";
	snprintf(test, sizeof(test), "%d ~ %s ~ %d", a, input, b);
	printf("%s", test);
	return 0;
}

输出如此:

33 ~ abcd ~ 25

Look,随意拼,随意组,字符串,任你走。

那么,一些任务将很简单了:

比如说,int里的数字转成char数组字符串:

char result[4];
int original = 123;
snprintf(result, sizeof(result), "%d", original);

就是这样。

除了当心长度和空间之外,没有什么特别需要注意的。毕竟,记得char数组字符串有个设置好的长度在。

标签:snprintf,int,C语言,char,数组,printf,字符串
From: https://www.cnblogs.com/izwb003/p/c_language_snprintf_function.html

相关文章

  • C语言-04
    自定义数据类型——初识/*引入:学生:姓名,学号,年龄,成绩请为学生们专门定制一个类型(创造一个类型)结构体格式:struct标识符//标识符即自定义类型的名称{成员;//自己设置};//这里要注意不要漏......
  • c语言学习4
    一、数组什么是数组:变量的组合,是一种批量定义相同类型变量的方式定义:类型名数组名[数量];intarr[5];注意:数组的长度一旦确定,无法改变使用:数组名[下标];下标:从0开始,范围:0~数量-1遍历:把数组的数据从头到尾显示或访问一般与for循环配合,把循环变量i当做数组下标初始化:类......
  • 用c语言写一个计算自己活了多少天的代码
    #include<stdio.h>//初始化数组保存天数inta[12]={31,28,31,30,31,30,31,31,30,31,30,31};//普通年intb[12]={31,29,31,30,31,30,31,31,30,31,30,31};//闰年//判断闰年intLeap(intyear){if((year%4==0&&year%100!=0)||(year%400==0)){return1;......
  • C语言(四)
    目录9.结构体9.1引入9.2语法9.3位域与柔性数组9.3.1位域9.3.2柔性数组10.联合体11.枚举12.typedef关键字12.1typedef和struct12.2typedef和函数指针12.3typedef与#define的区别13.C程序组成13.1.c文件的组成13.1.1头文件包含13.1.2宏定义13.1.3声明13.1.4条件编译13.2.h文......
  • C语言库函数
    C语言库函数1.stdio库1.1printf函数printf格式化输出符:inta=3;floatb=3.14;doublec=5.2;chars1[6]={'h','e','l','l','o','\0'};char*s2="world";printf("%d%f%f\n",......
  • PyCharm external tools
    这个external tools 用来执行命令,就不用打开terminal了,尤其是带一堆参数的时候 在File->Settings->Tools->ExternalTools下,点击加号,就可以创建Name是最后的名字Program是一个可执行文件,比如py,pyuicArguments就是带的参数Working directory是这个命令执行的目录,相当于cd......
  • Shiro characteristic and attack
    CharacteristicIfRememberMe=deleteMeatCookie,SoItisShiro.ShiroKeyYougetthekeyandtomixavulnerabilitywillgettheserversshellorcontroller.TODO.IfIencounterShiroduringfuturetesting,pleasecomeoverandsupplementthisnote.......
  • C语言-00
    初识C语言//单行注释/*多行注释1.语言发展历程二进制的指令-->汇编指令-->B语言-->C语言(高级语言)2.C语言国际标准:ANSIC---美国国家标准化组织CC89C90C99C11...3.C语言是一门编译型语言,而Pytho......
  • 谷歌浏览器Charset扩展程序(解决Google浏览器没有编码的问题)
    较新的谷歌浏览器没有编码这一项,可以选择添加插件的方式,如果无法访问chrome应用商店,请看本文最后的链接下载。将下载好的扩展程序解压,并添加该文件夹。就能看到Charset了。 可以设置了。 下载链接:链接:https://pan.baidu.com/s/1qy53aI6AgCuXUEB0fAb4aQ提取......
  • 关于C语言中的《scanf》和《printf》函数的返回值
    一,scanfC语言中的scanf函数的返回值类型是int,表示你正确输入参数的个数代码如下:#include<stdio.h>intmain(){ inta=0; intb=0; intnum=scanf("%d%d",&a,&b); printf("num=%d\n",num); return0;}一,printfC语言中的printf函数的返回值类型是int,表......