J’essaie sans succès de copier un tableau de caractères dans un autre. J’ai essayé de copier directement l’adresse de l’un à l’autre, comme ceci:
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; } } }
Mais évidemment ne fonctionne que dans cette fonction. J’ai aussi essayé comme ceci: http://www.cplusplus.com/reference/clibrary/cssortingng/memcpy/ mais cela n’a pas fonctionné. Est-ce que quelqu’un peut m’aider?
Supprimez le &
de &name
et cela devrait fonctionner. Votre déclaration de fonction est trompeuse. c’est en fait équivalent à:
void include(int id, char *name)
Le compilateur prétend que le paramètre de tableau a été déclaré en tant que pointeur
Si name
serait un tableau, name == &name
. Mais name
est un pointeur alors name != &name
.
La FAQ C a quelques questions qui pourraient aider: