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 while
Ausgänge zuerst). Dadurch bleibt die resultierende s
Zeichenfolge 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 while
Schleife.