实现了%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 }
时间: 2024-10-14 19:49:23