码迷,mamicode.com
首页 > 其他好文 > 详细

printf的实现(不借助stdarg.h中的宏)

时间:2014-05-13 11:01:59      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   java   c   

实现了%d %x %c %s 

对变长函数的参数取址有了深刻的理解 ,蒋yy的实验任务其实还是很有帮助的^_^

bubuko.com,布布扣
 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 }
bubuko.com,布布扣

 

printf的实现(不借助stdarg.h中的宏),布布扣,bubuko.com

printf的实现(不借助stdarg.h中的宏)

标签:style   blog   class   code   java   c   

原文地址:http://www.cnblogs.com/csxyc/p/3724613.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!