藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 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;
        }



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com