Es ist schon eine Weile her, dass ich mich mit C beschäftigt habe (ich lerne immer noch), und ich habe mich gerade wieder mit dem K&R-Buch beschäftigt.
Ich hatte gerade einen Besuch bei Übung 5-3 (p107).
Schreiben Sie eine Zeigerversion der Funktion strcat, die wir in Kapitel 2 gezeigt haben: strcat(s,t) kopiert die Zeichenkette t an das Ende von s.
Ich habe mir Folgendes ausgedacht este ...
void strcat(char *s, char *t);
void strcat(char *s, char *t) {
while (*s++ != '\0');
s--;
while (*t != '\0') {
*s++ = *t++;
}
*--t = '\0';
}
int main() {
char str[] = "Hey, hello";
char str2[] = " are you?";
strcat(str, str2);
printf("%s\n", str);
return 0;
}
Es scheint zu funktionieren.
Was mich wundert, ist, dass das K&R-Buch oft Übungen mit so wenig Zeilen wie möglich schreibt - ich würde erwarten, dass, wenn sie ihr eigenes Code-Beispiel für oben zur Verfügung gestellt hätten, man Dinge bekommen würde wie este ...
void strcat(char *s, char *t) {
while (*s++ != '\0');
s--;
while ((*s++ = *t++) != '\0');
*--t = '\0';
}
Für mich ist das weniger lesbar (vielleicht ist das Beispiel nicht so gut, aber ich schaue mir oft ihren Code an und denke wenn das in ein paar Zeilen aufgeteilt wäre, würde ich es viel besser verstehen ). Die Beispiele im Buch scheinen diese Art der Zuweisung im Bedingungsteil einer Schleife zu befürworten, und in der Tat so viel Code wie möglich pro Zeile zu pauken.
Ist es richtig, dass das Buch versucht, so viel wie möglich zu tun, auch wenn die Lesbarkeit darunter leidet?
Ist das nur Der C-Weg ?