C语言:模拟实现printf函数,能完成print("s ccc d.\n","hello",'m','i',k',100); 的调用。

题目:模拟实现printf函数,可完成下面的功能,能完成下面函数的调用。

print("s ccc d.\n","hello",'m','i','k',100);

函数原型:print(char *format, ...)

此题的解决思路为:根据print函数第一个字符串参数中的字符来判断后面需要打印的是什么类型,如果遇到一个s,说明后面有一个字符串,如果遇到一个c,说明后面有一个字符,如果遇到一个d,说明后面有一个整型,如果遇到其他字符,直接输出即可。然后分别处理每一个可变参数。

具体代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
void show(int ret)//打印整型
{
	if (ret > 9)
	{
		show(ret / 10);
	}
	putchar(ret % 10+'0');
}
void print(char *format, ...)
{
	va_list arg;
	va_start(arg, format);
	while (*format)
	{
		switch (*format)
		{
		case 's':
		{
				char* ret=va_arg(arg, char *);
				while (*ret)
				{
					putchar(*ret);
					ret++;
				}
		}
			break;
		case 'c':
		{
					putchar(va_arg(arg, char));
		}
			break;
		case 'd':
		{
					
					int ret=va_arg(arg,int);
					show(ret);
		}
			break;
		default:
			putchar(*format);
			break;	  
		}
		format++;
	}
}
int main()
{
	print("s ccc d\n", "hello", 'm', 'i', 'k',100);
	system("pause");
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值