Всем привет. Сразу сорри за нубизм, я только учусь. Пытаюсь решить задачу:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLINE 2
int _getline(char line[], int maxline);
void copy(char to[], char from[]);
int main() {
    int len;
    int max;
    char c;
    char *buf;
    char *longest;
    max = 0;
    while ((len = _getline(buf, MAXLINE)) > 0) {
        if (buf[len-1] != '\n')
            while ((c = getchar()) != EOF && c != '\n')
                buf[len++] = c;
        buf[len+1] = '\0';
        if (len > max) {
            max = len;
            if ((longest = malloc(sizeof(char) * len)) == NULL)
                printf("error alloc memory");
            copy(longest, buf);
            longest[len] = '\0';
        }
    }
    if (max > 0)
        printf("%d\n%s", max, longest);
    return 0;
}
int _getline(char s[], int lim) {
    int c, i;
    for (i = 0; i < lim-1 && (c = getchar()) != EOF && c != '\n'; ++i)
        s[i] = c;
    if (c == '\n') {
        s[i] = c;
        i++;
    }
    s[i] = '\0';
    return i;
}
void copy(char to[], char from[]) {
    int i;
    i = 0;
    while ((to[i] = from[i]) != '\0')
        i++;
}
Но почему-то ловлю сегфолт при выводе longest. В чем дело?








