如何将数组值复制到另一个数组

时间:2014-11-12 12:03:45

标签: c arrays

我有两个数组:

char roundNames1[16][25], roundNames2[16 / 2][25];

然后我想将第一个数组的结果复制到第二个数组。我试过这个:

其中roundNames1[5] = "hello"

#include <string.h>

printf("First array: %s", roundNames1[5]);
strcpy(roundNames1[5], roundNames2[6]);
printf("Second array: %s", roundNames2[6]);

但这只是返回

First array: hello
Second array:

为什么不起作用?

3 个答案:

答案 0 :(得分:2)

你需要交换函数strcpy

的参数
strcpy( roundNames2[8], roundNames1[5] );

以下是来自C标准

的功能描述的一部分

7.23.2.3 strcpy函数

概要

1

#include <string.h>
char *strcpy(char * restrict s1, const char * restrict s2);

描述

  

2 strcpy函数复制s2指向的字符串(包括   到终止空字符)到s1指向的数组。如果   复制发生在重叠的对象之间,行为是   未定义。

答案 1 :(得分:1)

答案 2 :(得分:0)

使用 memcpy 复制数组/字符串

void * memcpy (void * destination, void * source, size_t size)

memcpy 函数从源内存位置复制一定数量的字节并将它们写入目标位置。

示例:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
    char a[] = "stackoverflow";
    int s = sizeof(a);
    int c = s / sizeof(a[0]);
    char *p = malloc(s);
    memcpy(p, &a, s);
    printf("%s\n", p);
    free(p);
}

输出

$ ./a.out 
stackoverflow