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

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

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

Переписал вот такой вот код из учебника по c ansi от Денниса Ритчи и Брайана Кернигана:
Листинг программы
  1. #include <stdio.h>
  2. #define MAXLINE 1000 //Максимальная длина строки в потоке
  3. int getline(char line[], int maxline);
  4. void copy(char to[], char from[]);
  5. //вывод самой длинной строки в потоке
  6. main(){
  7. int len; //длина текущей строки
  8. int max; //текущая максимальная длина
  9. char line[MAXLINE]; //текущая введённая строка
  10. char longest[MAXLINE]; //самая длинная строка из введённых
  11. max=0;
  12. while ((len = getline(line, MAXLINE)) > 0)
  13. if (len > max) {
  14. max = len;
  15. copy(longest, line);
  16. }
  17. if (max > 0) //была непустая строка
  18. printf("%s", longest);
  19. return 0;
  20. }
  21. }
  22. //getline: считывает строку в s, возвращает её длину
  23. int getline(char s[], int lim){
  24. int c, i;
  25. for (i = 0; i<lim-1 && (c=getchar())!=EOF && c!='\n'; ++i)
  26. s[i] = c;
  27. if (c == '\n') {
  28. s[i] = c;
  29. ++i;
  30. }
  31. s[i] = '\0';
  32. return i;
  33. }
  34. //copy: копирует строку 'from' в 'to'; длина to считается достаточной
  35. void copy(char to[], char from[]){
  36. int i;
  37. i = 0;
  38. while ((to[i] = from[i]) != '\0')
  39. ++i;
  40. }
Во время компиляции мне выводит ошибку:
Листинг программы
  1. ancient@NickolayPC:~ > cd c
  2. ancient@NickolayPC:~/c > gcc 1.
  3. 1.7.c 1.9.c
  4. ancient@NickolayPC:~/c > gcc 1.9.c
  5. 1.9.c:4:5: error: conflicting types for getline
  6. int getline(char line[], int maxline);
  7. ^
  8. In file included from 1.9.c:1:0:
  9. /usr/include/stdio.h:678:20: note: previous declaration of getline was here
  10. extern _IO_ssize_t getline (char **__restrict __lineptr,
  11. ^
  12. 1.9.c:24:1: error: expected identifier or ‘(’ before ‘}’ token
  13. }
  14. ^
  15. 1.9.c:27:5: error: conflicting types for getline
  16. int getline(char s[], int lim){
  17. ^
  18. In file included from 1.9.c:1:0:
  19. /usr/include/stdio.h:678:20: note: previous declaration of getline was here
  20. extern _IO_ssize_t getline (char **__restrict __lineptr,
  21. ^
  22. ancient@NickolayPC:~/c >
Я немного недопонимаю - как это в коде из УЧЕБНИКА может быть ошибка? Я же всё правильно переписал. Разве что, начинающую скобку в функции писал не на отдельной строке, а в строке обьявления функции (так можно делать. Позаимствовал ещё с джавы)

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

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

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


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

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

5   голосов , оценка 4.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы