2015年7月11日 星期六

[C筆記]彈性可變式函式

前言:這裡想做一個有彈性函式,彈性的意思是我想要在函式輸入參數的部分,不想限制使用者輸入固定的參數數量,例如 printf("%i%i%i%i%i%i%i%i%i",1,2,3,4,5,6,7,8,9),這個常用的輸出方法不並沒有限制使用者只能輸出幾個參數。


提醒:
#include <stdarg.h> 使用裡面的
類別 va_list                   //記錄使用者輸入的所有參數
方法 va_start(ap,args) //告訴程式從哪個參數之後才開始抓
方法 va_arg(ap,int)      //拿回使用者的參數  並且必須告知使用者參數的類別方法va_end(ap)            //結束參數串列


sample code:
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>

void total(int args,char *x, ...)
{
     va_list ap;
     va_start(ap,x); //從x 參數之後才開始抓參數
     int i;
     for(i=0;i<args;i++)
     {
       printf("%i\n",va_arg(ap,int));                                        
     }
     va_end(ap);
}

int main(int argc, char *argv[])
{
  total(4,"after_char_*x",4,3,2,1);//不算"after_char_*x",只輸出4個參數

  system("PAUSE");   return 0;
}

輸出結果



沒有留言:

張貼留言