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 whilesorties en premier). Cela laissera la schaî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 whileboucle.

