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: