Aluminium
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Доброго дня. вроде не нашел решения подобной задачки. изучаю C самостоятельно по книге "Керниган Б., Ритчи Д. - Язык программирования Си (3-е издание)", дошел до раздела 1.9 где нужно сначала написать прогу, которая читает набор текстовых строк и печатает самую длинную из них. А потом идет упражнение: Перепишите main предыдущей программы так, чтобы она могла печатать самую длинную строку без каких-либо ограничений на ее размер. вот код исходной проги: Код: #include <stdio.h> #define MAXLINE 1000 int getline1(char s[]); void copy1(char to[], char from[]); void main() { int len, max; char line[MAXLINE]; char maxline[MAXLINE]; max = 0; while ((len = getline1(line)) > 0) if (len >= max) { max = len; copy1(maxline, line); } printf("%d\t%s\n", max, maxline); } int getline1(char s[]) { int c, i; for (i = 0; (c = getchar()) != EOF && c != '\n'; i++) { s[i] = c; } s[i] = '\0'; return i; } void copy1(char to[], char from[]) { int i = 0; while ((to[i] = from[i]) != '\0') i++; } | Нужно это сделать со знанием только того что уже было прочитано, не забегая наперед к указателям и прочему. Я реально в ступоре, как это сделать? |