Copiar matriz de caracteres a otra matriz de caracteres.

Estoy intentando sin éxito copiar una matriz de caracteres a otra. He intentado memcpy copiando directamente la dirección de una a otra, de esta manera:

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; } } } 

Pero obviamente solo funciona dentro de esta función. También he intentado esto: http://www.cplusplus.com/reference/clibrary/cstring/memcpy/ pero no funcionó. ¿Alguien me puede ayudar?

Suelte el & desde &name y debería funcionar. Su statement de función es engañosa; en realidad es equivalente a:

 void include(int id, char *name) 

El comstackdor simula que el parámetro de matriz se declaró como un puntero

Si el name sería una matriz, name == &name . Pero el name es un puntero así que name != &name .

Las preguntas frecuentes de C tienen algunas preguntas que pueden ayudar:

  • Parámetros de matriz
  • Tamaño del parámetro de la matriz