我正在处理一个生成用于填充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