title: How does getline() function work here?
body: <p>I do not understand how the function <code>getline</code> is working here. Why has the newline character been excluded from the for loop and why is it testing for the presence of newline character in a separate block?</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #define MAXLINE 1000 /* maximum input line length */
  
  int getline(char line[], int maxline);
  void copy(char to[], char from[]);
  
  /* print the 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)) &gt; 0)
          if (len &gt; max) {
              max = len;
              copy(longest, line);
          }
      if (max &gt; 0) /* there was a line */
          printf("%s", longest);
      return 0;
  }
  
  
  /* getline: read a line into s, return length */
  int getline(char s[],int lim)
  {
      int c, i;
      for (i=0; i &lt; lim-1 &amp;&amp; (c=getchar())!=EOF &amp;&amp; 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;
  }
  </code></pre>