自从我看 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 方式吗?