1. 程式人生 > >43.可變參數實現printf

43.可變參數實現printf

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     {
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 }

43.可變參數實現printf