3

「The C Programming Language」のこの古い例を試しています。関数で競合する型のエラーが発生しgetlineます。また、メインの前に関数を配置してみました。コンパイラとして gcc 4.6.3 を使用しています。

#include <stdio.h>
#define MAXLINE 1000

int getline(char line[], int maxline);
void copy(char to[], char from[]);

int main(void)
{
    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;
}
4

2 に答える 2