Fonction en C

jack -  
crabs Messages postés 909 Statut Membre -
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

  1. crabs Messages postés 909 Statut Membre 507
     
    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
    0
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    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];
      }
    }
    0
    1. crabs Messages postés 909 Statut Membre 507
       
      salut,
      Sauf erreur de ma part, il me semble que les 2 alternatives proposées oublient
      le '\0' de fin de chaine.
      A+, crabs
      0
      1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944 > crabs Messages postés 909 Statut Membre
         
        Bien observé :-)
        0
  3. jack
     
    "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?
    0
    1. crabs Messages postés 909 Statut Membre 507
       
      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'.
      0