text: #include <stdio.h>
  #define MAXLINE 1000
  
  int getline(char line[], int maxline);
  void copy(char to[], char from[]);
  
  /* print longest input line */
  int main(void)
  {
      int len;
      int max;
      char line[MAXLINE];
      char longest[MAXLINE];
  
      max = 0;
      while ((len = getline(line, MAXLINE)) > 0) {
          printf("%d: %s", len, line);
          if (len > max) {
              max = len;
              copy(longest, line);
          }
      }
      if (max > 0)
          printf("%s", longest);
      return 0;
  }
  
  /* getline:  read a line into s, return length */
  int getline(char s[], int lim)
  {
      int c, i;
      int j;
  
      /*-----BEGIN SOLUTION-----*/
      i = 0;
      while (i < lim - 1) {
          c = getchar();
          if (c == '\n')
              break;
          else if (c == EOF)
              break;
          else
              s[i++] = c;
      }
      /*-----END SOLUTION-----*/
      for (j = 0; c != EOF && c != '\n'; j++)
          c = getchar();
      if (i < lim - 1 && c == '\n') {
          s[i] = c;
          ++i;
      }
      s[i] = '\0';
      return i + j;
  }
  
  /* 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;
  }
  