自己写printf函数
来源:互联网 发布:手机照片写字软件 编辑:程序博客网 时间:2024/06/09 00:14
自己写printf函数。想法: 打印位置: dh=行,dl=列。 (1) 以printf("%c,%d,%s,%c/n",'a',2,"hello",'d')为例。 从 "%c,%d,%s,%c/n"里找要打印的信息属性。这个字符串的长度也能求出来。(0AH是‘/n’的ASICⅡ) (2)检测"%c,%d,%s,%c/n",如果当前是%C则打印出字符,是%D打印int型数据,是%S则打印字符串。是‘/n’,行号加1 如果是int数据,如234,要用逐位摸除方法,转换程字符‘2’,‘3’,‘4’再打印。因为显存上显示的都是字符型。 (3)检测到非上述信息,直接打印。 程序如下: } int count=0; /* the station of int and char used in stack */ char *buffer=(char *)malloc(10); while(*p!=0) if(*p=='%' && *(p+1)=='c') } str=(char *)*(int *)(_BP+6+count+count); count++; } else } 原文:http://blog.csdn.net/zy_sky/archive/2011/04/16/6327514.aspx
void print(char *,...);
main()
{
clrscr();
printf("%d,%c",123,'x');
print("%c,ccc%s,%d/n%d,%c",'a',"hello",1123,5,'d');
void print(char *p,...)
{
int data=0;
int signal=0;
char *str=0;
int dh=10;
int dl=0;
{
{
*(char far *)(0xb8000000+160*dh+2*dl)=*(int *)(_BP+6+count+count);
count++;
dl=dl+1;
p+=2;
}
else if(*p=='%' && *(p+1)=='d')
{
data=*(int *)(_BP+6+count+count) ;
count++;
p+=2;
if(data==0){ *(char far *)(0xb8000000+160*dh+2*dl)=0x30; dl+=1;}
if(data<0) { signal=1; data=-data; }
buffer[0]=0;
while(data!=0)
{
buffer++;
*buffer=data%10+0x30;
data=data/10;
}
while(*buffer!=0)
{
if(signal==1)
{
*(char far *)(0xb8000000+160*dh+2*dl)='-';
dl++;
signal=0;
}
*(char far *)(0xb8000000+160*dh+2*dl)=*buffer;
buffer--;
dl++;
}
else if(*p=='%' && *(p+1)=='s')
{
/*这里进行一个类型转化,把从栈里取得的int型数据,转换为char型指针*/
while(*str!=0)
{
*(char far *)(0xb8000000+160*dh+2*dl)=*str;
str++;
dl++;
}
p+=2;
else if(*p=='/n')
{
dh++;
dl=0;
p++;
}
{
*(char far *)(0xb8000000+160*dh+2*dl)=*p;
dl++;
p++;
}
}
- 自己写printf函数
- 自己写printf函数
- 自己写的printf函数
- 移植自己写的printf,scanf函数
- 自己写属于自己的printf()函数
- 用C语言写自己的printf函数
- 自己实现printf函数
- 自己实现printf函数
- 自己动手写 printf函数
- 自己动手写 printf函数
- 自己动手写 printf函数
- 实现自己的printf函数
- 实现自己的printf函数
- 实现自己的printf函数
- 自己实现printf函数,用...
- 自己实现一个printf函数
- 实现自己的printf函数
- 封装自己的printf函数
- 我在Archlinux下使用的软件列表
- csdn blog css自定义设置介绍
- jsp乱码问题
- ASP.NET中的Eval和DataBinder.Eval方法
- CosOS任务切换的实现
- 自己写printf函数
- 第三届华为编程大赛【C语言试题】
- 遍历驱动
- System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本
- RS232标准中的RTS与CTS
- 分析setup_arch
- 遍历进程
- 比较失败的项目管理经历总结
- 十个糟糕程序员的特征