C語言之可變引數
阿新 • • 發佈:2019-01-06
int pritnf(const char*,..);
//這裡的printf函式的形參是不確定的。
與可變引數相關的庫是 <stdarg.h> ,其中有幾個常用的巨集。
使用可變引數時,需要先定義一個 va_list 的變數。接著使用va_start(v,l)函式,v為先前定義的變數,l為第一個引數。
之後用va_arg(v,l)函式,取輸入的引數,v為先前定義的變數,l為引數型別。最後要記得,用va_end釋放先前定義的va_list變數。
一段自己的my_printf();
#include <stdarg.h> #include <stdio.h> int my_printf(const char* string,...) { va_list ap; char* temp; int cup; temp=string; while(*temp!='\0') { if(*temp=='\') { if(*++temp=='n') { putchar('\n'); } else if(*++temp=='\r') { putchar('\r'); } } else if(*temp=='%') { switch(*++temp) { case 'd': cup=va_arg(ap,int); //...呼叫十進位制轉字串的函式 break; case 'c': cup=va_arg(ap,char); putchat(cup); break; //... } } else { putchar(*temp); } temp++; } va_end(ap); }