Почему я получаю ошибку «конфликтующие типы для getline» при компиляции примера самой длинной строки в главе 1 K & R2?

Вот программа, которую я пытаюсь запустить прямо из раздела 1.9 «Язык программирования C».

#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;
}


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;
}

Вот ошибка, которую я получаю, когда пытаюсь скомпилировать программа с использованием Ubuntu 11.10:

cc     word.c   -o word
word.c:4:5: error: conflicting types for ‘getline’
/usr/include/stdio.h:671:20: note: previous declaration of ‘getline’ was here
word.c:26:5: error: conflicting types for ‘getline’
/usr/include/stdio.h:671:20: note: previous declaration of ‘getline’ was here
make: *** [word] Error 1

Чтобы убедиться, что это не проблема с печатью в книге, я сослался на этот набор ответов на упражнения в конце главы из книги (http://users.powernet.co. uk / eton / kandr2 / krx1.html), и я получаю аналогичную ошибку, когда пытаюсь выполнить упражнения 18, 19, 20, 21 и т. д. по этой ссылке. Очень сложно научиться, когда я не могу запускать программы чтобы увидеть, как они выводятся. Эта проблема возникла при введении массивов символов и вызовов функций в одной программе. Буду признателен за любой совет по этому вопросу.

34
задан systemovich 29 June 2013 в 08:43
поделиться