Зачем в данном случае прописывать len-1? Упражнение 1.17. Напишите программу для вывода всех строк входного потока, имеющих длину более 80 символов. /* программа вывода всех строк входного потока, имеющих длину более 80 символов */ #include "stdafx.h" #define MAXLINE 1000 /* максимальная длина строки в потоке */ int getline(char line[], int maxline); int main() { int len; /* длина текущей строки */ char line[MAXLINE]; /* текущая введенная строка */ while ((len = getline(line, MAXLINE)) > 0) /* если количество символов в строке больше 80, выводим эту строку */ =============================================================== if (len - 1 > 80) /* "len - 1" не считаем нулевой символ '\0' */ =============================================================== printf("This string is longer than 80 characters: %s", line); return 0; } /* getline: считывает строку в s, возвращает ее длину */ int getline (char s[], int lim) { int c, i; for (i = 0; i 80, а не просто len > 80. Ведь, например, если мы введем 123456\n, функция getlen вернет len = 7. Если мы введем len-1, получим 6 символов (Но это не учитывая \n). Но вот если мы введем просто 123456, функция вернет len = 6. Но len-1 = 5, а символов-то 6... Почему так
В данном случае (len-1) используется для того, чтобы не включать в расчет символ завершения строки '\0'. Функция getline считывает символы в массив s и добавляет в конец строки символ '\0' для обозначения конца строки.
Таким образом, длина строки, возвращаемая функцией getline, включает в себя все символы строки, включая '\n', и завершающий символ '\0'. Поэтому для проверки длины строки более 80 символов мы вычитаем 1 из значения len, чтобы не учитывать завершающий символ '\0'.
Если мы просто использовали бы len > 80, то при строке типа "123456" с длиной 6 символов условие бы не выполнилось (6 не больше 80), хотя фактически символов в строке 6 и она подпадает под условие задачи.
Поэтому используется (len-1) > 80 для корректной проверки на количество символов в строке, исключая из расчета завершающий символ '\0'.
В данном случае (len-1) используется для того, чтобы не включать в расчет символ завершения строки '\0'. Функция getline считывает символы в массив s и добавляет в конец строки символ '\0' для обозначения конца строки.
Таким образом, длина строки, возвращаемая функцией getline, включает в себя все символы строки, включая '\n', и завершающий символ '\0'. Поэтому для проверки длины строки более 80 символов мы вычитаем 1 из значения len, чтобы не учитывать завершающий символ '\0'.
Если мы просто использовали бы len > 80, то при строке типа "123456" с длиной 6 символов условие бы не выполнилось (6 не больше 80), хотя фактически символов в строке 6 и она подпадает под условие задачи.
Поэтому используется (len-1) > 80 для корректной проверки на количество символов в строке, исключая из расчета завершающий символ '\0'.