自编printf 函数

<pre name="code" class="html">#include "stdafx.h"
#include <stdio.h>
#include "ZRprintf.h"

void Printf(const char *pFormate,...)
{
   char *pTemp =(char*)&pFormate;
    pTemp+=4;

	while(*pFormate)
	{  
		if( '%' != *pFormate)
		{
		  putchar(*pFormate);
		  pFormate++;
		}

	   if( '%' == *pFormate)
	   {
		   pFormate++;
	      switch(*pFormate)
		  {
		  case 'c':
		  case 'C':
			  {
				  putchar(*pTemp);
				  pTemp+=4;
				  pFormate++;
			  }
			  break;
		  case 's':
		  case 'S':
			  {
			      char *pChar = *(char**)pTemp;

				  for( int i =0 ;'\0' != pChar[i];i++)
				  {
				    putchar(pChar[i]);
				  }
			      pTemp+=4;
				  pFormate++;
			  }
			  break;
		  case 'd':
		  case 'D':
			  {
			     char szBuf[256] = "";

			  	 Itoa(*(int*)pTemp,szBuf);

				 for(int i =0 ;'\0' != szBuf[i];i++)
				 {
				   putchar(szBuf[i]);
				 }
				 pTemp+=4;
				 pFormate++;
			  }
			  break;		  
		  }	   
	   }	
	}
}

void Itoa(int nNum,char *pStr)
{
	int nTemp = nNum;
    int count = 0;

	if( nNum < 0)
	{ 
	   nTemp = -nNum;
	   while( nTemp > 0)
	   {
	     nTemp = nTemp/10;
		 count++;
	   }

       nNum = -nNum;

	   for(int i = count; i >0 ;i--)
	   {
	     pStr[i] = nNum%10 + '0';
		 nNum = nNum/10;
	   }
	   pStr[count+1] = '\0';
	   pStr[0] = '-';	
	}
   else if( nNum > 0)
   {
     while( nTemp > 0)
	 {
	   nTemp = nTemp/10;
	   count++;
	 }
	 
	 for(int i = count-1; i >= 0; i--)
	 {
	    pStr[i] = nNum%10 +'0';
		nNum = nNum/10;
	 }
     
	 pStr[count] = '\0';
   }   
   else
   {
     pStr[0] = '0';
   }
}


 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值