Собственно вопрос в том, как решить предложенную в "Язык программирования С" (Издание 2е,по всей видимости) задачку:
Предыстория (копипаст из книги). Чтобы проиллюстрировать использование символьных массивов и работающих с ними функций, напишем программу, которая читает набор текстовых строк и печатает самую длинную из них.
Решение, предложенное в книге :
#include <stdio.h>
#define MAXLINE 1000 /* максимальный размер вводимой строки */
int getline(char line[], int MAXLINE);
void copy(char to[], char from[]);
/* печать самой длинной строки */
main()
{
int len; /* длина текущей строки */
int max; /* длина максимальной из просмотренных строк */
char line[MAXLINE]; /* текущая строка */
char longest[MAXLINE]; /* самая длинная строка */
max = 0;
while (len = getline(line, MAXLINE)) > 0)
if (len > max) {
max = len;
copy(longest, line);
}
if (max > 0) /* была ли хоть одна строка? */
printf(“%s”, longest);
return 0;
}
/* getline: читает строку в s, возвращает длину */
int getline(char s[], int lim)
{
int c, i;
for (i = 0; i < lim-1 && (c = getchar()) != EOF && с != '\n'; ++i)
s[i] = c;
if (c == '\n') {
s[i] = c;
++i;
}
s[i] = '\0';
return i;
}
/* copy: копирует из 'from' в 'to'; to достаточно большой */
void copy(char to[], char from[])
{
int i;
i = 0;
while ((to[i] = from[i]) != '\0')
++i;
}
А теперь собственно задание:
Перепишите main предыдущей программы так, чтобы она могла печатать самую длинную строку без каких-либо ограничений на ее размер.
Главная особенность заключается в том, что
1. в рамках первой главы ничего неизвестно о динамическом выделении памяти;
2. в условии требуется менять main, т.е. функции copy и getline менять нельзя
Ответ на:
комментарий
от shuthdar
Ответ на:
комментарий
от shuthdar
Ответ на:
комментарий
от shuthdar
Ответ на:
комментарий
от shuthdar
Ответ на:
комментарий
от K-Vrat
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум K&R Задача 1.16 (2015)
- Форум [C, K&R примеры] Примеру 1.9, передача аргумента в функцию, откуда возбмется строка (2010)
- Форум [c, K&R] По какому событию должен выводится результат? (2010)
- Форум ANSI С.трабла с учебным примером. (2006)
- Форум [C]Траблы с объявлением функции (2012)
- Форум Массивы указателей K&R (2015)
- Форум Программа из K&R вопросы по warnings, полученные от gcc (2015)
- Форум Помогите поправить код си (2012)
- Форум tcc gnu getline в рот мне ноги (2013)
- Форум Вопросы по коду из K&R readlines() strcpy(p, line) (2015)