Fonction en C

Fermé
jack - 12 déc. 2005 à 19:20
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 - 13 déc. 2005 à 05:19
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

crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
12 déc. 2005 à 20:03
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 33282 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 24 septembre 2024 7 785
12 déc. 2005 à 20:39
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 lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
12 déc. 2005 à 20:50
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 33282 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 24 septembre 2024 7 785 > crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008
12 déc. 2005 à 23:41
Bien observé :-)
0
"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 lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
13 déc. 2005 à 05:19
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