/*
 * cmp_prefix.c
 * This program reads two strings and finds their longest common prefix.
 */

#include <stdio.h>
#include <string.h>

#define MAX_LENGTH 80

int main ()
{
  char   found_title[] = "The longest prefix is: ";
  char   not_found_title[] = "No common prefix has been found.";
  char   str1[MAX_LENGTH + 1];      /* The first string. */
  int    len1;                      /* Its length. */
  char   str2[MAX_LENGTH + 1];      /* The second string. */
  int    len2;                      /* Its length. */
  int    l_prefix = 0;              /* Length of the common prefix so far. */
  char   prefix[MAX_LENGTH + 1];

  /* Read the first input string and compute its length. */
  printf ("Please enter the first string: ");
  scanf ("%s", str1);
  len1 = strlen (str1);

  /* Read the second input string and compute its length. */
  printf ("Please enter the second string: ");
  scanf ("%s", str2);
  len2 = strlen (str2);

  /* Find the longest common prefix. */
  while (l_prefix + 1 <= len1 && l_prefix + 1 <= len2 &&
         strncmp (str1, str2, l_prefix + 1) == 0)
  {
    l_prefix++;
  }

  /* Print the results. */
  if (l_prefix == 0)
  {
    printf ("%s\n", not_found_title);
  }
  else
  {
    /* Copy the prefix and print it. */
    strncpy (prefix, str1, l_prefix);
    prefix[l_prefix] = '\0';
    printf ("%s%s\n", found_title, prefix);
  }

  return (0);
}

