Copie de tableau de caractères
Transcription
Copie de tableau de caractères
Copie de tableau de caractères 3 versions tableau pointeur + indice pointeur + increment Clarifier le contrat Copier le contenu d’un tableau dans un autre Le tableau destination doit être assez grand Le tableau source doit avoir une marque de fin (\0) La marque de fin sera ajoutée au tableau destination 2 arguments: dst = argument de sortie src = argument d’entrée « Vision » tableau On ne voit pas de pointeur … void copy(char dst[], char src[]) { int i; for (i=0;src[i] != ‘\0’; i++) { dst[i] = src[i]; } dst[i] = ‘\0’; } « Vision » mixte … Utilisation indice 0, incrément des pointeurs … src et dst sont jetables void copy(char dst[], char src[]) { for ( ;src[0] != ‘\0’; src++, dst++) { dst[0] = src[0]; } dst[0] = ‘\0’; } « Vision » pointeurs … Utilisation indirection, incrément des pointeurs … src et dst sont jetables void copy(char* dst, char* src) { for ( ;*src != ‘\0’; src++, dst++) { *dst = *src; } *dst = ‘\0’; } Ecritures « compactes » … void copy(char* dst, char* src) { while (*src != ‘\0’) { *dst++ = *src++; } *dst = ‘\0’; } void copy(char* dst, char* src) { while ((*dst++ = *src++) != ‘\0’) { ; } } // THE MUST! void copy(char* dst, char* src) { while (*dst++ = *src++) ; }