1 #include <stdio.h>
2 #include <stdio.h>
3 #include <Windows.h>
4 #include <stdarg.h>
5
6 void myprintf(char *ptstr, ...)//可变参数
7 {
8 va_list ap;//起始点
9 va_start(ap, ptstr);//从ptstr开始向后读取数据存放在ap中
10 char flag;//依次读取一个字符
11 while (*ptstr != '\0')
12 {
13 flag = *ptstr;
14 if (*ptstr != '%')
15 {
16 putchar(flag);//打印字符
17 ptstr++;
18 }
19 else
20 {
21 ptstr++;//往前 %d %c %s %%
22 flag = *ptstr;//取出字符
23
24 switch (flag)
25 {
26 case 'd':
27 {
28 int data = va_arg(ap, int);//读取下一个参数安装int
29 printf("%d", data);//整数转化字符串,挨个显示字符
30 break;
31 }
32
33 case 's':
34 {
35 char* data = va_arg(ap, char*);//读取下一个参数安装int
36 printf("%s", data);//整数转化字符串,挨个显示字符
37 break;
38 }
39
40 case 'c':
41 {
42 char data = va_arg(ap, char);//读取下一个参数安装int
43 putchar(data);
44 break;
45 }
46 }
47 ptstr++;
48 }
49 }
50 va_end(ap);//结束读取
51 }
52
53 void main()
54 {
55 myprintf("abcd%s%c\n","成都市",'t');
56
57 system("pause");
58 }