C(まだ学んでいる)を見てからしばらく経ち、K&Rの本に戻ったところです。
演習5-3(p107)に進んだところです。
第2章で示した関数strcatのポインターバージョンを記述します。strcat(s、t)は文字列tをsの末尾にコピーします。
私はこれを思いついた...
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;
}
うまくいくようです。
私が不思議に思っているのは、K&Rの本は、できるだけ少ない行で演習を書くことが多いということです-上記の独自のコードサンプルが提供されていれば、次のようなものが得られると思います...
void strcat(char *s, char *t) {
while (*s++ != '\0');
s--;
while ((*s++ = *t++) != '\0');
*--t = '\0';
}
私にとって、これは読みにくいです(この例はあまり良くないかもしれませんが、私はしばしば彼らのコードを見て、それが数行に分かれていれば、はるかによく理解できると思います)。この本で提供されている例は、ループの条件部分でこの種の割り当てを推奨しているようであり、実際には、行ごとに可能な限り多くのコードを詰め込んでいます。
たとえ読みやすさが損なわれたとしても、この本はできる限りできる限りのことをしようとしているのでしょうか。
これはただのCウェイですか?