2009-12-06 56 views
1

我希望寫一個函數來代替fprintf中寫它採用可變數量的參數(C編程)

​​

我不知道如何定義一個函數,如函數替換這是因爲,在format參數之後,這個函數需要可變數量的參數。具體來說,它至少需要格式中指定的附加參數。

UPDATE我找到了關於該主題的資源(http://publications.gbdirect.co.uk/c_book/chapter9/stdarg.html),但該示例似乎並未在我正在使用的Linux下編譯。

fprintf替換fprintf的例子只是調用fprintf會有幫助。

這不是家庭作業。我只是一個試圖在閒暇時間學習如何編程的初學者。謝謝!

+1

爲什麼不編譯?你得到什麼錯誤? – 2009-12-06 05:16:08

+0

14:error:expected';',','或')''args'之前 – Charles 2009-12-06 05:20:27

+1

大聲笑,你還可以發佈你的代碼嗎? – 2009-12-06 05:20:55

回答

8

而不是直接呼叫fprintf,您需要改爲撥打vfprintf。例如:

#include <stdarg.h> 
int myfprintf(FILE *stream, const char *format, ...) { 
    va_list args; 
    va_start(args, format); 
    int r = vfprintf(stream, format, args); 
    va_end(args); 
    return r; 
} 

在標準庫,每一個需要可變參數(...)函數還具有v版本,需要一個va_list參數相同功能的。由於您無法構造參數以動態傳遞給...,因此需要使用v變體傳遞可變參數。