将char数组复制到另一个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; } } }
但显然只能在此function内部工作。 我也尝试过这样: http : //www.cplusplus.com/reference/clibrary/cstring/memcpy/但它没有用。 有人能帮我吗?
删除&
来自&name
,它应该工作。 你的function声明具有误导性; 它实际上相当于:
void include(int id, char *name)
编译器假装数组参数被声明为指针
如果name
是数组,则name == &name
。 但是name
是一个指针,所以name != &name
。
C FAQ有一些问题可能会有所帮助:
- 数组参数
- 数组参数大小