我有两个数组:
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:
为什么不起作用?
答案 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)
strcpy
- 相反的论点。
答案 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