#include <stdio.h>   

#include <string.h>    

#include <stdarg.h>  

void Int2Hex_Inchar(int num,char *Hexstr) 

int i=9; 

int j=0;

int yushu; 

char a[10] = {'0','x','0','0','0','0','0','0','0','0'};

while(num>0) 

yushu=num%16; 

if(yushu < 10)

a[i--]=yushu + 48;

else

a[i--]=yushu + 55;

num=num/16; 

for(;j<10;j++)

{

Hexstr[j] = a[j];

//putchar(Hexstr[j]);

}

 }

int my_print(char *strin, char *strout,... )    

if(strin == NULL)

   return -1;

    va_list arg_ptr;                   /* 定义保存函数参数的结构 */        

    int para;                     /* 存放取出的字符串参数 */    

    int i;   

char save_hex[10];                          

                                        

    va_start( arg_ptr, strout );    /* arg_ptr指向传入的第一个可选参数,    strout是最后一个确定的参数 */

      

    while(*strin)

{

if(*strin!= '%')  

       {  

         putchar(*strin);

*strout = *strin;

         strin++;  

strout++;

       }  

  else

  {

para = va_arg( arg_ptr, int);

Int2Hex_Inchar(para,save_hex);

for(i=0;i<10;i++)

{

putchar(save_hex[i]);

*strout++ = save_hex[i] ;

}

strin=strin+2;

  }

}

*strout = '\0';

      

    va_end( arg_ptr );                                   /* 将arg_ptr置为NULL */    

    return 0;    

}  

  

  

void main( void )    

{

char strout[1024]; 

my_print("ni hao %z ni hao %z %z %z %z ",strout,3450,15,245,50,6);

printf("\n In main the strout is : %s\n",strout);       

}