例如,我们要实现一个简易的my_printf:
1. 它只返回void, 不记录输出的字符数目
2. 它只接受"%d"按整数输出、"%c"按字符输出、"%%"输出'%'本身
如下:
1 #include <stdarg.h>
2
3 void my_printf(const char* fmt, ... )
4 {
5 va_list ap;
6 va_start(ap,fmt); /* 用最后一个具有参数的类型的参数去初始化ap */
7 for (;*fmt;++fmt)
8 {
9 /* 如果不是控制字符 */
10 if (*fmt!='%')
11 {
12 putchar(*fmt); /* 直接输出 */
13 continue;
14 }
15 /* 如果是控制字符,查看下一字符 */
16 ++fmt;
17 if ('
2
3 void my_printf(const char* fmt, ... )
4 {
5 va_list ap;
6 va_start(ap,fmt); /* 用最后一个具有参数的类型的参数去初始化ap */
7 for (;*fmt;++fmt)
8 {
9 /* 如果不是控制字符 */
10 if (*fmt!='%')
11 {
12 putchar(*fmt); /* 直接输出 */
13 continue;
14 }
15 /* 如果是控制字符,查看下一字符 */
16 ++fmt;
17 if ('