gpt4 book ai didi

c - 通过过程将格式字符串传递给 fprintf

转载 作者:行者123 更新时间:2023-12-01 07:12:08 26 4
gpt4 key购买 nike

我正在开发一个生成 FDF 文件以填写 Adob​​e PDF 表单的程序。目前,我有各种被调用的过程,在每个过程终止之前,它打开 FDF 文件,写入其特定数据,然后关闭文件。

我试图将用于将数据写入 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);

我现在遇到错误,我相信这与函数参数的最后一部分有关。另外,如果我有多个参数,我怎样才能让它工作?

谢谢你。

最佳答案

您需要vfprintf .它将接受一个可变的参数列表。

像这样:

void writeToFDF(FILE *fp, char *filename, char *data, ...)
{
va_list pl;

/* independent method for writing to FDF file */

/* open file */
fp=fopen(filename,"a");

va_start (pl, data);

vfprintf(fp,data,pl);

/* close file */
fclose(fp);
va_end(pl);
}

编辑:虽然我试图尽可能接近您的原始代码,但省略 FILE *fp 参数的 ephemient 解决方案实际上更好: fp 仅具有本地意义(它在此函数中打开和关闭),因此不应传递。

关于c - 通过过程将格式字符串传递给 fprintf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1602283/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com