Прошло некоторое время с тех пор, как я посмотрел на C (все еще учился), и я только что вернулся в книгу K & R.Является ли K & R обучением плохой читаемости?
Я только что пошел Упражнение 5-3 (p107).
Напишите указатель версии функции strcat, который мы показали в главе 2: strcat (s, t) копирует строку t в конец s.
Я придумал this ...
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 часто пишет упражнения с минимальными строками - я бы ожидал, если бы они предоставили свой собственный пример кода выше, вы бы получили такие вещи, как this ...
void strcat(char *s, char *t) {
while (*s++ != '\0');
s--;
while ((*s++ = *t++) != '\0');
*--t = '\0';
}
Для меня это менее читаемыми (может быть, этот пример не так хорошо, но я часто смотрю на свой код и думать , если это был разделен на несколько строк, я понимаю гораздо лучше). Примеры, приведенные в книге, как представляется, защищают такое назначение в состоянии цикла, и на самом деле кодируют как можно больше кода на строку.
Является ли книга прав, пытаясь сделать как можно больше, где вы можете, даже если читаемость страдает?
Это только The C Way?
Книга K & R была написана как 25 лет назад (32, если быть точным). Вещи переместились на ... –
Если вам когда-либо приходилось писать программы, используя телетайп или перфокарты, то вы бы оценили терпение - в эти дни, конечно, гораздо важнее стремиться к ясности, а не к лаконичности. –
C был одним из первых языков, которые я узнал. НО, зачем учиться C? Вам лучше учиться C# –