#include <iostream>
#include <stdarg.h>
using namespace std;
//printf函数的实现
int __cdecl cc_printf
(
const char *format,
...
)
{
va_list argulist;
int ret = 0;
va_start(argulist, format);
while (*format)
{
if(*format != '%')
{
putchar(*format);
++ret;
goto loop;
}
else
{
++format;
switch (*format)
{
//char
case 'c':
{
int value = va_arg(argulist, int);
ret += printf("%c", (char)value);
goto loop;
}
//char *
case 's':
{
char *value = va_arg(argulist, char *);
ret += printf("%s", value);
goto loop;
}
//int
case 'd':
{
int value = va_arg(argulist, int);
ret += printf("%d", value);
goto loop;
}
case 'o':
{
int value = va_arg(argulist, int);
ret += printf("%x", value);
goto loop;
}
case 'x':
{
int value = va_arg(argulist, int);
ret += printf("%x", value);
goto loop;
}
case 'X':
{
int value = va_arg(argulist, int);
ret += printf("%X", value);
goto loop;
}
case 'u':
{
unsigned value = va_arg(argulist, unsigned);
ret += printf("%u", value);
goto loop;
}
case 'f':
{
double value = va_arg(argulist, double);
ret += printf("%f", value);
goto loop;
}
default:
{
goto loop;
}
}
}
loop:
++format;
}
va_end(argulist);
return ret;
}
void main()
{
int i=10;
cc_printf("%d\n",i);
cc_printf("hello world\n");
}
【面试题】printf函数实现
最新推荐文章于 2024-07-04 22:46:42 发布