Ошибка компиляции примера из учебника - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Переписал вот такой вот код из учебника по c ansi от Денниса Ритчи и Брайана Кернигана:
#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 && c!='\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;
}
Во время компиляции мне выводит ошибку:
ancient@NickolayPC:~ > cd c
ancient@NickolayPC:~/c > gcc 1.
1.7.c  1.9.c  
ancient@NickolayPC:~/c > gcc 1.9.c 
1.9.c:4:5: error: conflicting types for ‘getline’
 int getline(char line[], int maxline);
     ^
In file included from 1.9.c:1:0:
/usr/include/stdio.h:678:20: note: previous declaration of ‘getline’ was here
 extern _IO_ssize_t getline (char **__restrict __lineptr,
                    ^
1.9.c:24:1: error: expected identifier or ‘(’ before ‘}’ token
 }
 ^
1.9.c:27:5: error: conflicting types for ‘getline’
 int getline(char s[], int lim){
     ^
In file included from 1.9.c:1:0:
/usr/include/stdio.h:678:20: note: previous declaration of ‘getline’ was here
 extern _IO_ssize_t getline (char **__restrict __lineptr,
                    ^
ancient@NickolayPC:~/c >
Я немного недопонимаю - как это в коде из УЧЕБНИКА может быть ошибка? Я же всё правильно переписал. Разве что, начинающую скобку в функции писал не на отдельной строке, а в строке обьявления функции (так можно делать. Позаимствовал ещё с джавы)

Решение задачи: «Ошибка компиляции примера из учебника»

textual
Листинг программы
int main()
{
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы