利用可变参数模拟实现printf打印

 //函数原型: 

//print(char *format, ...)

#include <stdio.h> 
#include <stdarg.h> 
#include <assert.h> 
int myprintf(const char *format, ...) 
{ 
	va_list arg; 
	assert(format); 

	va_start(arg, format); 
	while (*format) 
	{ 
		if (*format == '%') 
		{ 
			format++; 
			switch (*format) 
			{ 
			case's': 
				{ 
					char *s = va_arg(arg,char*); 
					while (*s) 
					{ 
						puts(s); 
					} 
				} 
				break; 
			case'c': 
				{ 
					char c = va_arg(arg, char); 
					putchar(c); 
				} 
				break; 
			case'%': 
				{ 
					putchar('%'); 
				} 
				break; 
			default: 
				puts("format error!\n"); 
				return 0; 
			} 
		} 
		else if (*format == '\\') 
		{ 
		} 
		else 
		{ 
			putchar(*format); 
		} 
		format++; 
	} 
	va_end(arg); 
	return 0; 
} 
int main() 
{ 
	char c = 'c'; 
	char *s = "hello word"; 
	int a = 100;
	myprintf("hello %c,hello, %s,%d\n", c, s,a); 
	myprintf("%s %c%c%c %d\n","hello",'b','i','t',100);
	system("pause"); 
	return 0; 
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值