帮忙设计一个超简单的c程序

2024-11-30 04:21:45
推荐回答(1个)
回答1:

我上个月写的,给你吧
要用TC才能运行
/*只实现了a~z的字符,和该字符数值的打印,数字的打印*/

void myPrintf(char *,...);

main()

{

clrscr();

myPrintf("%c,%d",'a','b'); /*第二个参数位应该是_BP+6*/

}

void myPrintf(char *p,...)

{

int i,j,temp,count,arr[10]; /*数组用于存放1位以上的数字*/

int pOffset=0; /*用于显存的偏移*/

int stackOffset=6; /*用于访问栈中的偏移*/

for(i=0;p[i]!='\0';++i)

{

if(p[i]=='%')

{

if(p[i+1]=='c')

{

j = *(int *)(_BP+stackOffset);

}

else if(p[i+1]=='d')

{

j=(int)*(int *)(_BP+stackOffset);

{

count = 0;

while(j>0)

{

arr[count] = j % 10;

++count;

j = j/10;

}

for(j=count-1;j>=0;--j)

{

*(char far *)(0xb8000000+160*12+80+pOffset+pOffset)=arr[j]+0x30;

*(char far *)(0xb8000000+160*12+81+pOffset+pOffset)=2;

pOffset += 1; /*显存的偏移*/

}

stackOffset += 2;

++i;

continue; /*因上面已执行输出,所以下面不再执行*/

}/*if*/

}

stackOffset += 2; /*读取了栈中一个元素,需要移向下一元素*/

++i; /*为格式字符时,i需要再向前移*/

}

else /*打印字符串中的其它字符*/

{

j=p[i];

/*pOffset += 1;*/

}

*(char far *)(0xb8000000+160*12+80+pOffset+pOffset)=j;

*(char far *)(0xb8000000+160*12+81+pOffset+pOffset)=2;

pOffset += 1; /*显存的偏移*/

}

}