简单模拟实现C语言库函数printf

在C语言中经常用到printf,但却很少思考它是怎末实现的,今天我们就来模拟实现一下。
首先,我们来看一下MSDN中对它的定义。
printf,
Print formatted output to the standard output stream.
(格式化打印标准输出流)
(函数参数)int printf( const char *format [, argument]… );

//在代码中省掉了对%的判断,其实只要判断是%是,让format++一下,跳过百分号,继续查找就好了
void print_num(int num)
{
    if(num>9)
    {
        print_num(num/10);
    }
    putchar(num%10 + '0');
}
#include<string.h>
void print(char *format,...)
{
    va_list arg;
    va_start (arg,format);
    while(*format)
    {
        char c =0;
        switch(*format)
    {
    case 's':
        {
        char *s = va_arg(arg,char*);
        while(*s)
        {
            putchar(*s);
            s++;
        }
        }
        break;

    case 'c':
        putchar(va_arg(arg,char));
        break;
    case 'd':
        {
            int ret = va_arg(arg,int);
            print_num(ret);
            break;
        }
    default :
        putchar(*format);
        break;
    }
    format++;
    }
}
int main()
{
    print("s ccc d \n","hello",'b','i','t',100);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/aixintianshideshouhu/article/details/81229690