模拟实现printf

模拟实现printf函数,可完成下面的功能 

// 
//能完成下面函数的调用。 
//print("s ccc d.\n","hello",'b','i','t',100); 
//函数原型: 
//print(char *format, ...) 
// 
 

#include
#include
#include
#include

int print_num(int n)
{
	while (n > 9)
	{
		print_num(n / 10);
	}
	putchar(n % 10 + '0');
}

int print(const char *format, ...)
{
	assert(format);
	va_list arg;
	va_start(arg, format);
	const char *p = format;
	while (*p)
	{
		if (*p == '%')
		{
			p++;
			switch (*p)
			{
			case'd':
				print_num(va_arg(arg, int));
				break;
			case's':
			{
				char *start = (va_arg(arg, char *));
				while (*start)
				{
					putchar(*start);
					p++;
				}
				break;
			}
			case'c':
				putchar(va_arg(arg, char));
				break;
			default:
				break;
			}
		}
		else
		{
			putchar(*p);
		}
		p++;
	}
	va_end(arg);
}

int main()
{
	print("s ccc d.\n","hello",'b','i','t',100);
	system("pause");
	return 0;
}

 

你可能感兴趣的:(模拟实现printf)