我正在處理一個生成用於填充Adobe PDF表單的FDF文件的程序。目前,我有各種各樣的過程被調用,就像在每個過程終止之前一樣,它打開FDF文件,寫入特定數據並關閉文件。通過過程將格式字符串傳遞給fprintf
我試圖把代碼寫入FDF文件的數據在一個單獨的過程,然後讓其他程序調用它。這將允許通過任務更好地分離代碼,如果將來我必須改變它,我可以輕鬆地做到這一點。
雖然我有一些問題,因爲我需要將不同數量的變量傳遞給fprintf。也就是說,我曾經有這樣一行:
fprintf(fp,"<</T(f1_44(0))/V(%d)>>\n",wages);
我寫了下面的功能,但我不能得到它的工作:
void writeToFDF(FILE *fp, char *filename, char *data, char *arg)
{
/* independent method for writing to FDF file */
/* open file */
fp=fopen(filename,"a");
fprintf(fp,data,arg);
/* close file */
fclose(fp);
}
所以理論上,我會再父函數調用:
writeToFDF(fp,"1040.fdf","<</T(f1_44(0))/V(%d)>>\n",wages);
我現在收到錯誤,我相信它與函數的參數的最後部分有關。另外,如果我有多個參數,我怎麼才能使它工作?
謝謝。
是的,我想過,我得收拾我的代碼。不過,我認爲你使用va_start是正確的,至少在我的Linux機器上,它並不承認va_begin。 –
但是再次感謝! –
糟糕,'va_begin'屬於舊的'varargs.h'。新標準確實是'stdarg.h'和'va_start'。 – ephemient