gpt4 book ai didi

c - ansi c 中可变数量的参数(不同类型)

转载 作者:行者123 更新时间:2023-11-30 18:50:48 25 4
gpt4 key购买 nike

我正在尝试解决以下问题...
我有一个函数应该接受以下参数:

change(input_file_name, output_file_name, pid1, pid1_file_name, pid2, pid2_file_name, etc... );

因此,如果运行此函数,将会出现:

change("input.file","output.file", 20, "file1.file", 21, "file2.file", 22, "file3.file", 23, "file4.file);

这个函数的定义是:

#include <stdarg.h>
int change(char input[], char output[], int n, ...)
{
va_list ap;
unsigned int a;
char *name;

va_start(ap, n);

...

for (; n; n-=2) {
a = va_arg(ap, int);
name = va_arg(ap,char *);

...

}
va_end(ap);
return i;
}

但这不能正常工作。当尝试获取“a”和“name”变量时,我得到随机数据。

最佳答案

您缺少 n 的参数。结果,其他一切都关闭了。

“20”读作n,然后“file1.file”读作a,“21”读作name,“file2.file”读作a,“file2.file”读作a,“file2.file”读作a文件”作为 a

像这样调用函数:

                              //   v--- add this
change("input.file","output.file", 8, 20, "file1.file",
21, "file2.file",
22, "file3.file",
23, "file4.file");

关于c - ansi c 中可变数量的参数(不同类型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39015222/

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