#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);
}