我正在努力将char数组复制到另一个char数组。我已经尝试将memcpy直接从一个地址复制到另一个地址,如下所示:
void include(int id, char name[16]) {
int i;
for (i = 0; i < SZ; i++) {
if (a[i].id == 0) {
a[i].id = id;
memcpy(&a[i].name, &name, strlen(name)+1);
return;
}
}
}
但显然只适用于此功能。我也尝试过这样:http://www.cplusplus.com/reference/clibrary/cstring/memcpy/但它没有用。 有人能帮助我吗?
答案 0 :(得分:4)
从&
中删除&name
,它应该有效。你的功能声明具有误导性;它实际上相当于:
void include(int id, char *name)
编译器假装该数组 参数被声明为指针
如果name
是一个数组,name == &name
。但是name
是指针name != &name
。
C FAQ提出了一些可能有用的问题: