sprintf是字符串格式化命令,把格式化的数据写入某个字符串中,即发送格式化输出到string所指向的字符串。sprintf是个变参函数。使用sprintf对于写入buffer的字符数是没有限制的,存在buffer溢出可能性。
sprintf 指的是字符串格式化命令,函数声明为 int sprintf(char *string, char *format [,argument,…]);,主要功能是把格式化的数据写入某个字符串中,即发送格式化输出到 string 所指向的字符串。sprintf 是个变参函数。使用 sprintf 对于写入 buffer 的字符数是没有限制的,这就存在了 buffer 溢出的可能性。解决这个问题,可以考虑使用 snprintf 函数,该函数可对写入字符数做出限制。
sprintf 函数语法
函数声明
int sprintf(char *string, char *format [,argument,…]);
参数列表
string– 这是指向一个字符数组的指针,该数组存储了 C 字符串。
format– 这是字符串,包含了要被写入到字符串 str 的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进行格式化。format 标签属性是%[flags][width][.precision][length]specifier
功能
把格式化的数据写入某个字符串缓冲区。
返回值
如果成功,则返回写入的字符总数,不包括字符串追加在字符串末尾的空字符。如果失败,则返回一个负数。
sprintf 返回以 format 为格式 argument 为内容组成的结果被写入 string 的字节数,结束字符‘’不计入内。即,如果“Hello”被写入空间足够大的 string 后,函数 sprintf 返回 5。