Fonction en C

Bonsoir , quelqu'un pourrait me dire concrètement quel est le role de cette fonction en C :

void copier(char vers[], char de[])
{
int i = 0;
while ( (vers[i] = de[i]) != '\0')
++i;
}


merci

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Salut,
    C'est sensé copier la chaine de caractères contenue dans le tableau de
    caractère 'de' , dans la chaine contenue dans le tableau de caractères 'vers'.
    A+, crabs
    1. Modérateur
      En décomposé ça donne ça :
      void copier (char vers[],char de[]){
        int i=0;
        while(de[i]!='\0'){
          vers[i]=de[i];
          i++;
        }
      }

      Mais moi j'aurais plutôt écrit

      void copier (char vers[],char de[]){
        unsigned int i;
        for(i=0;de[i]!='\0';++i){
           vers[i]=de[i];
        }
      }
      1. salut,
        Sauf erreur de ma part, il me semble que les 2 alternatives proposées oublient
        le '\0' de fin de chaine.
        A+, crabs
    2. "Salut,
      C'est sensé copier la chaine de caractères contenue dans le tableau de
      caractère 'de' , dans la chaine contenue dans le tableau de caractères 'vers'.
      A+, crabs "

      c'est pas plutot la chaine contenu dans vers qui est copiée dans de?
      1. Salut,
        while ( (vers[i] = de[i]) != '\0') ++i ;

        Pour moi cette affectation met dans le caractère du tableau 'vers' à la position 'i' le
        caractère du tableau 'de' à la position 'i'; tant que ce caratère n'est pas celui de
        fin de chaine ('\0').
        L'affectation étant faite avant le test, le '\0' est copié dans 'vers'.