Nehmen wir an, ich möchte eine Funktion schreiben, die zwei Zeichenfolgen in C verkettet.
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';
}
Allerdings K & R in ihrem Buch umgesetzt es anders, vor allem mit so viel im Bedingungsteil der while - Schleife wie möglich:
void concat(char s[], char t[]){
int i, j;
i = j = 0;
while (s[i] != '\0') i++;
while ((s[i++]=t[j++]) != '\0');
}
Welcher Weg wird bevorzugt? Ist es empfehlenswert oder nicht empfehlenswert, wie bei K & R Code zu schreiben? Ich glaube, meine Version wäre für andere leichter zu lesen.
while (*s++ = *t++); (Mein C ist sehr verrostet, brauche ich dort Parens, damit der Operator Vorrang hat?). Hat K & R eine neue Version ihres Buches veröffentlicht? Ihr ursprüngliches Buch hatte einen äußerst präzisen und idiomatischen Code.
'\0'von t(die whileAusgänge zuerst). Dadurch bleibt die resultierende sZeichenfolge ohne Abschluss '\0'(es sei denn, der Speicherort wurde bereits auf Null gesetzt). Der zweite Codeblock erstellt die Kopie des Abschlusses '\0'vor dem Verlassen der whileSchleife.

