Supposons que je veuille écrire une fonction qui concatène deux chaînes en C. Voici comment je l'écrirais:
void concat(char s[], char t[]){
int i = 0;
int j = 0;
while (s[i] != '\0'){
i++;
}
while (t[j] != '\0'){
s[i] = t[j];
i++;
j++;
}
s[i] = '\0';
}
Cependant, K & R dans leur livre l'a implémenté différemment, en incluant notamment autant que possible dans la partie condition de la boucle while:
void concat(char s[], char t[]){
int i, j;
i = j = 0;
while (s[i] != '\0') i++;
while ((s[i++]=t[j++]) != '\0');
}
Quel chemin est préféré? Est-il encouragé ou découragé d’écrire du code comme le fait K & R? Je crois que ma version serait plus facile à lire par d'autres personnes.
while (*s++ = *t++);
(Mon C est très rouillé, ai-je besoin de parens pour la préséance des opérateurs?) K & R a-t-il publié une nouvelle version de leur livre? Leur livre original avait un code extrêmement concis et idiomatique.
'\0'
de t
(les while
sorties en premier). Cela laissera la s
chaîne résultante sans terminaison '\0'
(à moins que l'emplacement mémoire ait déjà été mis à zéro). Le deuxième bloc de code effectuera la copie de la terminaison '\0'
avant de quitter la while
boucle.