`

#include<stdio.h>
#define MAXLINE 1000

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

/*print longest input line*/
main()
{
    int len;         /*current line length*/
    int max;         /*maximum length seen so far*/
    char line[MAXLINE];         /*current input line*/
    char longest[MAXLINE];      /*longest line saved here*/

    max=0;
    while(len=getline(line,MAXLINE)>0)
        if(len>max) {
            max=len;
            copy(longest,line);
        }
    if (max>0)    /*there was a line*/
        printf("%s",longest);
    return 0;
}

/*getline: read a line into s and returns it's length*/
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: copy from into to ; assume to is big enough */
void copy(char to[],char from[])
{
    int i;

    i=0;
    while((to[i]=from[i])!= '\0')
        ++i;
}

`
shows blank cmd and it prints the first line but it suppose to print the longest line

In copy() you need to null-terminate the string at line 50 because that while statement doesn't do it.

The main problem is line 16, it's missing required parentheses.

while ( (len = getline(line, MAXLINE)) > 0)

line 31-38 are also incorrect. The only way to get EOF is to press Ctrl+Z, which is not even necessary. Just pressing Enter is sufficient to break out of the loop.

    for (i = 0; i<lim - 1 && (c = getchar()) != '\n'; ++i)
        s[i] = c;
    s[i] = '\0';
    return i;

Edited 2 Years Ago by Ancient Dragon

One of your main problems start here: main(). There is no return type. Since your returning 0 I would assume you want int main(), since that is the standard declaration.

Also in getline you've declared c as int but you use it as a char. While this works it is usually better to declare char's explicitly and restricts accidentally assigning a value too big.

Edited 2 Years Ago by tinstaafl

One of your main pr0blems start here: main(). There is n0 return type. Since your returning 0 I would assume you want int main(), since that is the Standard declaration.

This article has been dead for over six months. Start a new discussion instead.