将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有一些问题可能会有所帮助:

  • 数组参数
  • 数组参数大小