Copier un tableau de caractères dans un autre tableau de caractères

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:

  • Paramètres de tableau
  • Taille du paramètre de tableau