#include<stdio.h> #include<stdlib.h> #include<stdarg.h> #include<string.h> //自定義輸出函數,按照str的字符順序輸出 字符,字符串,數字 void my_printf(const char *str, int len, ...) { va_list arg; va_start(arg, len); for (int i = 0; i < len; i++,*str++) { char a = 0; char *a1 = NULL; int a2 = 0; //多分支語句,分情況討論 switch (*str) { case 'c': //參數是字符型,char類型 a = va_arg(arg, char); putchar(a); break; case 's': //參數是字符串時,char*類型 a1 = va_arg(arg,char*); while (*a1) { putchar(*a1); *a1++; } break; case 'd': //參數是整形,int類型 a2 = va_arg(arg, int); putchar(a2+'0'); break; default: //參數是其他,按照本來形式輸出 putchar(*str); break; } } va_end(arg); } int main() { char *str = "dc\ts\ndc\ndc\ts!"; int len = strlen(str); my_printf(str, len,1, 'b',"zhangweina",2, 'i', 3,'t', "welcome to you"); system("pause"); return 0; }