Fonction en C

jack -  
crabs Messages postés 908 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

3 réponses

crabs Messages postés 908 Date d'inscription   Statut Membre Dernière intervention   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
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
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
crabs Messages postés 908 Date d'inscription   Statut Membre Dernière intervention   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
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884 > crabs Messages postés 908 Date d'inscription   Statut Membre Dernière intervention  
 
Bien observé :-)
0
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
crabs Messages postés 908 Date d'inscription   Statut Membre Dernière intervention   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