43.可變參數實現printf
阿新 • • 發佈:2018-01-25
blog include system void tar 開始 pos va_end pre
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 { 13flag = *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 }
43.可變參數實現printf