对你们真的很无语~
进过我认真的研究,自己编写出啦了~
放出代码,大家看看:
void myprintf(char* fmt, ...)
{
char c;
int n=6;
int nch[100];
int i=0;
int cs;
int s;
int r;
do
{
c=*fmt;
if (c != '%')
{
putch(c);
}
else
{
switch(*++fmt)
{
case 'c':
putch(*(int *)(_BP+n));
n=n+2;
break;
case 'd':
cs=*(int *)(_BP+n);
if(cs>0)
{
do
{
r=cs%10;
cs=cs/10;
nch[i]=r;
i++;
}while(cs!=0);
do
{
i--;
putch(nch[i]+48);
}while(i!=0);
}else if(cs<0)
{
cs=abs(cs);
do
{
r=cs%10;
cs=cs/10;
nch[i]=r;
i++;
}while(cs!=0);
putch('-');
do
{
i--;
putch(nch[i]+48);
}while(i!=0);
}
else if(cs==0)
{
putch('0');
}
n=n+2;
break;
default:
fmt--;
putch(*fmt);
break;
}
}
fmt++;
}while (*fmt != '\0');
}
void main()
{
myprintf("showchar:%c,shownumber:%d %d %d %d,and other special char%qwer%%%%wefterfdg%fwer",65,0,32767,-32767,0);
}
这个代码只有-32768不能显示,估计是压栈指针没有指示到。有心劲儿的同学可以自己改改~不行的话可以好好交流!“千万别说什么问题没有水平。”说这话的人真没水平。。。。
[
本帖最后由 sxzjw 于 2010-5-26 21:59 编辑 ]