Всем привет. Сразу сорри за нубизм, я только учусь. Пытаюсь решить задачу:
#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. В чем дело?