📅  最后修改于: 2023-12-03 15:30:15.030000             🧑  作者: Mango
在C语言中,我们经常需要对字符串进行格式化输出或者拼接。其中,使用标准输出函数printf()
虽然方便,但存在一些安全风险,比如缓冲区溢出等。因此,C库中提供了一系列的安全字符串函数,其中之一就是snprintf()
。
snprintf()
函数是C语言中一种字符串处理函数,其原型如下:
#include <stdio.h>
int snprintf(char* str, size_t size, const char* format, ...);
参数解释如下:
str
:指向一个字符数组,用于存储格式化后的字符串。size
:指定输出到字符数组的最大字符数,避免缓冲区溢出现象。format
:格式控制字符串。...
:可选参数,根据格式控制字符串中的占位符个数变化。函数返回值:
下面是一个使用snprintf()
函数进行格式化输出的示例:
#include <stdio.h>
int main()
{
char buf[50];
int num = 123;
float pi = 3.1415926;
snprintf(buf, sizeof buf, "The number is %d, and the pi is %.2f", num, pi);
printf("%s\n", buf);
return 0;
}
其中,sizeof
运算符可以获取数组buf
的大小,从而避免缓冲区溢出风险。
snprintf()
函数欲写入的字符数大于等于size
,则会截断输出,并在结尾添加\0
。