首页 > 代码库 > printf的实现(不借助stdarg.h中的宏)
printf的实现(不借助stdarg.h中的宏)
实现了%d %x %c %s
对变长函数的参数取址有了深刻的理解 ,蒋yy的实验任务其实还是很有帮助的^_^
1 int printf ( const char * format, ... ) 2 { 3 int Count=0; 4 int index=0; 5 char buffer[32]; 6 int t=&format; 7 t+=4; 8 while(*format){ 9 if(*format==‘%‘){ 10 if(*(format+1)==‘d‘)//10进制整数 11 { 12 format++; 13 int temp=*(int*)t; 14 15 while(temp){ 16 buffer[index]=temp%10+48; 17 temp/=10; 18 index++; 19 } 20 index--; 21 while(index>=0){ 22 putchar(buffer[index]); 23 index--; 24 } 25 index++; 26 t+=4; 27 } 28 else if(*(format+1)==‘x‘)//16进制整数 29 { 30 format++; 31 int temp=*(int*)t; 32 while(temp){ 33 if(temp%16<=9) 34 buffer[index]=temp%16+48; 35 else 36 buffer[index]=temp%16-10+65; 37 temp/=16; 38 index++; 39 } 40 index--; 41 while(index>=0){ 42 putchar(buffer[index]); 43 index--; 44 } 45 index++; 46 t+=4; 47 } 48 else if(*(format+1)==‘c‘)//char 49 { 50 format++; 51 char temp=*(char*)t; 52 putchar(temp); 53 t+=4; 54 } 55 else if(*(format+1)==‘s‘)//string 56 { 57 format++; 58 char*temp=*(char**)t; 59 while(*temp){ 60 putchar(*temp); 61 temp++; 62 } 63 t+=4; 64 } 65 66 } 67 else putchar(*format); 68 format++; 69 70 } 71 72 return 0; 73 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。