Ошибка компиляции примера из учебника - 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()
- {
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д