标签:style blog class code java c
实现了%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 }
printf的实现(不借助stdarg.h中的宏),布布扣,bubuko.com
标签:style blog class code java c
原文地址:http://www.cnblogs.com/csxyc/p/3724613.html