C - 从 va_arg 中检索 int 数组的值
C - Retrieving the values of an int array from va_arg
我似乎无法弄清楚如何检索传递给参数数量可变的函数的 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 中的五个值中的每一个并将其写入 char 数组 "buffer"。然后将此(最初为空)缓冲区的内容复制(实际上连接到)到 char 数组 "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
会更有效。
我似乎无法弄清楚如何检索传递给参数数量可变的函数的 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 中的五个值中的每一个并将其写入 char 数组 "buffer"。然后将此(最初为空)缓冲区的内容复制(实际上连接到)到 char 数组 "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
会更有效。