glibc sprintf源码梳理(上)

尝试阅读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的实现&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值