我正在尝试创建 printf() 的简化版本,但不使用 va_list、va_start、va_arg 和 va_end。
我最初的想法是:
void my_printf (char *format, ...);
然后,检查格式,并计算 % (参数)的数量,以找出传递给我的函数的变量的数量。从那里开始,我正在考虑根据有多少参数创建一个缓冲区,然后组合并使用 write() 最终输出它们。
有没有更好的方法来解决这个问题?我的计划会遇到问题吗?
任何帮助将不胜感激。
我的一些头脑风暴代码是:
// Count arguments
int cnt_s, cnt_c, cnt_d, cnt_u, cnt_x;
for (; *format; format++) {
switch(format[0]) {
case '%':
switch(format[1]) {
case 'd':
cnt_d++;
}
}
}