将结构数组复制到另一个更大的结构数组而没有单独的元素访问?

时间:2014-11-05 16:38:05

标签: c structure

我想将小结构数组的所有元素复制到更大的结构数组,而不从我的代码在下面的结构中复制单个元素

此问题在copy smaller array into larger array之前提出,但我找不到合适的回复。请帮助我

  struct st 
 {
  int i;
  char ch[10];
 };

 int main()
  {
   struct st var[2]={1,"hello",2"bye"};
   struct st largevar[3];
   strcpy(largevar,var);// this is bad i guss but is there any way to copy without individual element access?
  }

2 个答案:

答案 0 :(得分:1)

你不是很远,但memcpy中的正确函数:strcpy复制空终止字符串,memcpy复制任意内存块:

您可以使用:

memcpy(largevar, var, sizeof(struc st) * 2);

答案 1 :(得分:0)

你应该使用如下所示的memcpy()而不是strcpy()。

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

    struct st 
     {
      int i;
      char ch[10];
     };

     int main()
      {
          int i =0;
       struct st var[2]={{1,"hello"},{2,"bye"}};
       struct st largevar[3];
       memcpy(largevar,var,sizeof(struct st) * 2);
       for(i=0;i<2;i++)
       printf("%d %s\n",largevar[i].i,largevar[i].ch);
       return 0;
      }