尝试阅读sprint源码
glibc 版本2.11
0. sprintf和snprintf
sprintf和snprintf的是字符串格式化方法,可将格式化数据写入字符串中。
snprintf规定了写入字符串的最大长度,避免字符串长度溢出
sprintf和snprintf方法定义在libio/stdio.h中,其声明和方法参数说明如下:
/*
__s : 字符数组指针,存储拼接后的字符串
__format: 字符串,规定了字符串格式
... : 可变参数,填充format中的值
返回值: 欲写入的字符串长度
*/
int sprintf(char *__restrict __s, __const char *__restrict __format, ...)
/*
__maxlen: 规定了拼接字符串的最长长度
(1) 如果拼接后字符串长度 < maxlen,则正常复制,并且末尾添加('\0')
(2) 如果拼接后字符串长度 > maxlen,则只复制(maxlen-1)个字符,末尾添加('\0')
返回值: 欲写入的字符串长度,可能>maxlen
*/
int snprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, ...)
1. stdio-common/sprintf.c
sprintf方法的实现在stdio-common/sprintf.c文件中,其中定义了__sprintf的实现&#