gpt4 book ai didi

C - 从 va_arg 中检索 int 数组的值

转载 作者:太空宇宙 更新时间:2023-11-04 06:14:37 25 4
gpt4 key购买 nike

我似乎无法弄清楚如何检索传递给参数数量可变的函数的 int 数组的各个值...

函数调用如下所示(两个字符数组与问题无关):

int arr[5];

testFunc(3, charArr1, charArr2, intArr);

在 testFunc() 中,我尝试像这样检索值(对于 char 数组,它工作得很好):

va_start(ptr, cnt);
if (cnt > 1) {
for (i=0; i < cnt; i++) {
switch(i) {
case 0:
strcpy(charArr1, va_arg(ptr, char *));
break;
case 1:
strcpy(charArr2, va_arg(ptr, char *));
break;
case 2:
for (j=0; j<5; j++) {
sprintf(buffer, "%d ", va_arg(ptr, int *));
strcat(message, buffer);
}
break;
}
}
}
va_end(ptr);

基本上,我想要实现的是检索 intArr 中的五个值中的每一个并将其写入字符数组“缓冲区”。然后将此(最初为空)缓冲区的内容复制(实际上连接到)到字符数组“message”中。假设 int 数组中的五个 int 值分别为 2、5、3、9、8,我将 message 输出为字符串,那么最终输出应该是“2 5 3 9 8”。

我必须在我的代码中更改什么才能到达那里?

感谢任何帮助! ...

最佳答案

你调用了 va_arg 5 次,而你应该只调用它一次:intArr 是一个单一的参数。

改用临时变量:

int * temp;

...

case 2:
temp = va_arg(ptr, int*);
for (j=0; j<5; j++) {
snprintf(buffer, BUFFER_SIZE, "%d ", temp[i]);

但我质疑是否需要使用 var args 函数。通常,当参数应该为空时,使用常量参数并传递 NULL 会更有效。

关于C - 从 va_arg 中检索 int 数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48622902/

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