在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;
}