关闭

自编printf 函数

185人阅读 评论(0) 收藏 举报
分类:
<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';
   }
}




   
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3757次
    • 积分:279
    • 等级:
    • 排名:千里之外
    • 原创:22篇
    • 转载:0篇
    • 译文:3篇
    • 评论:0条
    文章分类