假设我想编写一个在C中连接两个字符串的函数。我的编写方式是:
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';
}
但是,K&R在他们的书中以不同的方式实现了它,尤其是在while循环的条件部分中尽可能多地包括:
void concat(char s[], char t[]){
int i, j;
i = j = 0;
while (s[i] != '\0') i++;
while ((s[i++]=t[j++]) != '\0');
}
首选哪种方式?是鼓励还是不鼓励以K&R的方式编写代码?我相信我的版本会更容易被其他人阅读。
while (*s++ = *t++);
(我的C语言非常生锈,我需要在此处使用运算符优先级吗?)K&R是否发布了该书的新版本?他们的原始书具有极为简洁和惯用的代码。
'\0'
从t
(所述while
第一出口)。这将使结果s
字符串不终止'\0'
(除非内存位置已被清零)。第二个代码块将'\0'
在退出while
循环之前复制终结点。