98 votes

Comment copier un tableau de chars en C ?

En C, j'ai deux tableaux de chars :

char array1[18] = "abcdefg";
char array2[18];

Comment copier la valeur de array1 a array2 ? Puis-je simplement faire ceci : array2 = array1 ?

0voto

D0rm1nd0 Points 135

Pour les types entiers

#include <string.h>    

int array1[10] = {0,1,2,3,4,5,6,7,8,9};
int array2[10];

memcpy(array2,array1,sizeof(array1)); // memcpy("destination","source","size")

0voto

chqrlie Points 17105

Vous ne pouvez pas assigner des tableaux pour les copier. La façon dont vous pouvez copier le contenu d'un tableau dans un autre dépend de plusieurs facteurs :

Pour char si vous savez que le tableau source est à terminaison nulle et que le tableau de destination est suffisamment grand pour contenir la chaîne du tableau source, y compris la terminaison nulle, utilisez la fonction strcpy() :

#include <string.h>

char array1[18] = "abcdefg";
char array2[18];

...

strcpy(array2, array1);

Si vous ne savez pas si le tableau de destination est assez grand, mais que la source est une chaîne C, et que vous voulez que la destination soit une chaîne C correcte, utilisez snprinf() :

#include <stdio.h>

char array1[] = "a longer string that might not fit";
char array2[18];

...

snprintf(array2, sizeof array2, "%s", array1);

Si le tableau source n'est pas nécessairement à terminaison nulle, mais que vous savez que les deux tableaux ont la même taille, vous pouvez utiliser la méthode suivante memcpy :

#include <string.h>

char array1[28] = "a non null terminated string";
char array2[28];

...

memcpy(array2, array1, sizeof array2);

0voto

Aucune des méthodes ci-dessus ne fonctionne pour moi ceci fonctionne parfaitement name voici char *name qui est transmis par la fonction

  1. obtenir la longueur de char *name en utilisant strlen(name)
  2. le stockage dans une variable constante est important
  3. créer une taille de même longueur char tableau
  4. copie name Le contenu du site temp en utilisant strcpy(temp, name);

Utilisez-le comme vous voulez, si vous voulez récupérer le contenu original. strcpy(name, temp); copier le temporaire vers name et voilà, ça marche parfaitement

    const int size = strlen(name);
    char temp[size];
    cout << size << endl;
    strcpy(temp, name);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X