|
藍森林 http://www.lslnet.com 2006年6月6日 10:18
如何實現函數處理不定多個參數?
這個問題在絕大部分時候沒用,但是在有的時候很有好處。
我想自己編寫一個函數,實現類似printf()的功能,它能夠根據第一個參數中的
某些設定來確定此次調用到底有多少個參數,並且合理的使用這些參數。
可是找不到相關資料,所有的相關書籍只有它的定義,類似foo(int i,int j,...)
哪偉大蝦會這種技巧啊!求救!!!! |
如何實現函數處理不定多個參數?
vsprintf |
如何實現函數處理不定多個參數?
可能是我沒說清楚。我希望定義一個函數
foo(int i,void * j,...){}
通過對 *j的處理,來知道傳入的參數數量,同時可以在函數內部對這些參數
進行使用。
如果哪位知道,可否給出一個實例來說明。 |
如何實現函數處理不定多個參數?
valist
vastart
精華區中有文章討論這個 |
如何實現函數處理不定多個參數?
|
如何實現函數處理不定多個參數?
麻煩樓主老大看看FAQ或者精華區。 |
如何實現函數處理不定多個參數?
#include <stdio.h>;
#include <stdarg.h>;
void foo(char *fmt, ...)
{
va_list ap;
int d;
char c, *s;
va_start(ap, fmt);
while (*fmt)
switch(*fmt++) {
case 's': /* string */
s = va_arg(ap, char *);
printf("string %s\n", s);
break;
case 'd': /* int */
d = va_arg(ap, int);
printf("int %d\n", d);
break;
case 'c': /* char */
c = va_arg(ap, char);
printf("char %c\n", c);
break;
}
va_end(ap);
}
int main (void)
{
foo ("ssdcds", "Hello", "world.", 50, 'a', 2000, "END");
return 0;
} |
| |