Привожу код:
Код: Выделить всё
//считывает набор строк и выводит самую длинную из них
#include <stdio.h>
#define MAXLINE 1000
int getline(char line[], int);
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;
}
//считывает строку в s, возвращает ее длину
int getline(char s[], int lim)
{
int c, i;
for (i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; ++i) //если строка от 1 до 1000 символов, не содержит
s[i] = c; //конца файла или новой строки, записать i-й символ
//в i-й элемент массива s[]
if (c == '\n') //как только ловим конец строки, записывает этот символ в последний i, полученный в цикле for
{
s[i] = c;
++i; //окончательное значение количества символов в строке
}
s[i] = '\0'; //сообщаем о конце строки
return i;
}
//копирует из одной строки в другую
void copy (char to[], char from[])
{
int i;
while ((to[i] = from[i]) != '\0')
++i;
}