如何合并传递给具有可变参数的函数的数组

时间:2016-04-21 15:40:45

标签: c

我一直在研究如何合并数组,并使用可变参数创建函数。然后它让我思考,“我不能把两者结合起来吗?'。我想出了这个功能。根据我的理解它应该有效,但我得到错误。谁能告诉我我做错了什么?

#include <stdio.h>
#include <stdarg.h>

char* merge(int num, ...)
{
    va_list list;
    char arr[9] = {0};
    char *temp;
    int i;
    int j;
    int k=0;

    va_start(list,num);

    for(i=0;i<num;i++)
    {
        temp = va_arg(list,char[]);
        j = 0;
        while(temp[j] != 0x00)
        {
            arr[k] = temp[j];
            j++;
        }
        k++;
    }
    va_end(list);
    return arr;
}

int main()
{
    char data_1[] = "my";
    char merged_array[9] = "legs";
    int n=0;

    //merged_array = merge(1,  data_1);
    while(merged_array == 0x00)
    {
        printf("%s\n",merged_array[n]);
        n++;
    }
}

1 个答案:

答案 0 :(得分:0)

也许这有助于您入门:

#include <stdio.h>
#include <string.h>
#include <stdarg.h>

char* merge(char *arr, int num, ...)
   {
   va_list list;
   int i;

   va_start(list,num);
   for(i=0;i<num;i++)
      strcat(arr, va_arg(list,char *));
   va_end(list);

   return arr;
   }

int main()
   {
   char data_1[] = "my";
   char merged_array[9] = "legs";

   merge(merged_array, 1,  data_1);
   printf("%s\n", merged_array);

   return(0);
   }