/*printf()函数的实现代码,为和库函数区别,特在各函数前增加前缀“my”*/
void myprintf(char *FMt,…)
{
void *p;
char ch;
p=&fmt;p=(char**)p+1;/*指向堆栈中的下一个参数*/
while(1){
while((ch=*fmt++)!='%'{/*读入格式字符串*/
if(ch= ='0')return;
putchar(ch);
};
ch=*fmt++;
switch(ch){ /*格式字符分析*/
/*因为字符参数传递时也转换成整形参数传递,故同样处理*/
case 'c':
case'd':
case'x':
case'0':
case'b':
if(ch= ='c')myputchar(*(int *)p));
if(ch= ='d')myprintn(*((int *)p),10);
if(ch= ='x')myprintn(*((int *)p),16);
if(ch= ='o')myprintn(*((int *)p),8);
if(ch= ='b')myprintn(*((int *)p),2);
p=(int)p+1; /*指针移动*/
break;
case's':
myputs(*((char **)p));
p=(char **)p+1; /*指针移动*/
break;
default;
};
}