printf与sprintf的实现
原文链接 http://yonghaowu.github.io/2015/02/01/Sprintf/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。
因为要修复Wine的Bug,需要重新实现sprintf, 于是我研究了wine中printf跟sprinf的实现。
其实printf跟sprintf实现的关键无非就是可变参数,利用此就可以写出一个功能简单的printf.
我仔细研究了一下Wine里面的实现,发现printf跟sprintf的实现核心都用到了pfprintfa(就是根据参数%f,%d等转换的函数),不过重定向不一样。
printf是用到了write_concole, sprintf是复制到buf里面~
实际上, printf这个我们常用的函数, 申请了内存, 用buf来存放输出的结果.