Il y a une question que je me pose depuis longtemps : à quoi sert la valeur de retour de strcat() et strcpy() ?
Comme vous le savez certainement une « erreur de style » fréquente est d'utiliser une série de strcat() pour construire une chaine. C'est particulièrement inefficace puisque strcat() commence par chercher le '\0' final de la chaine de destination. Par exemple dans
Code :
- strcpy(dst, machin);
- strcat(dst, " est un " );
- strcat(dst, machin);
|
on va chercher 2 fois le '\0' final d'un dst qui est de plus en plus grand.
Si strcat() et strcpy() renvoyaient un pointeur vers le '\0' final, alors ce serait super simple de faire efficace :
Code :
- end = strcpy(dst, machin);
- end = strcpy(end, " est un " );
- end = strcpy(end, machin);
|
Donc la question est : mais pourquoi strcat() et strdup() renvoient un pointeur vers la chaine de destination ? C'est complètement inutile, et en plus je la connais puisque je l'ai passée en argument...
Message édité par matafan le 05-11-2003 à 04:06:24