在C中将一个数组的元素复制到另一个数组

时间:2013-12-04 09:06:47

标签: c arrays char

所以我试图在C中使用char数组从一个数组复制到另一个数组,每次一个元素,但是,我被困在这个部分。我确实尝试过研究,但可能是我愚蠢或不是,我仍然无法做到正确。这是我的代码:

说我有两个数组

char arr1[1000][3]
char arr2[1000][3]

所以我的意思是[3]字符串的长度相等,每个数组有1000个元素。所以arr1[0] = "AB\0"

我显然不能arr1[i] = arr2[i];当然不会工作,我确实试过strcpy但是做得不对。请帮我一点,谢谢:)

这里是它的一部分,我写的具体功能: 请回答我问的问题,我可以用Java轻松完成,但我真的学习C所以...... 一个例子很好:D

//build stacks                                                                                                                                                                                                     
card_pos_ptr add_card(card_pos_ptr head, char card_list[1000][3], int index){
  int i,k = 0;
  int start_index = index;
  card_pos_ptr current = head;
  for(i=0;i<13;i++){
    for(k=0;k<4;k++){
      if(current->card_stack == NULL){
        card_ptr node = (card_ptr)malloc(sizeof(card));
    strcpy(node->card_name,);
        node->up = false;
        node->down = NULL;
        start_index++;
      }else{
        card_ptr node = (card_ptr)malloc(sizeof(card));
        //node->card_name[0] = card_list[start_index];                                                                                                                                                             
        node->up = false;
        node->down = current->card_stack;
        current->card_stack = node;
        start_index++;
      }
    }
    current = current->next_pos;
  }

}

3 个答案:

答案 0 :(得分:4)

不确定你要对这个声明做什么,但是在声明数组的地方你需要这样的东西:

  char arr1[1000][3];
  char arr1[0][0] = 'A';
  char arr1[0][0] = 'B';
  ...

为了一次复制一个元素,请使用for ...

if ( something that determines X ? ) {
    for ( int i=0; i < 3 ; i++ ) {
       arr2[x][i] = arr1[x][i];
    }

}

答案 1 :(得分:1)

我会这样做:

int i;
char arr1[1000][3];
char arr2[1000][3];

arr1[0][0]='v';

for(i=0;i<1000;++i)
{
    strncpy(arr2[i],arr1[i],3); //safe copy, copies max. 3 chars.
}

printf("%c\n",arr2[0][0]);

答案 2 :(得分:0)

尝试

memcpy(&amp; node-&gt; card_name [0],card_list [start_index])