/*
 * greeting.c
 * This program reads a first name and a last name and prints a greeting.
 */

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

#define MAX_NAME 80

int main ()
{
  char    first_name[MAX_NAME];
  char    last_name[MAX_NAME];
  char    *full_name;
  char    *greeting;

  /* Read the first name and the last name. */
  printf ("Please enter your first name: ");
  scanf ("%s", first_name);

  printf ("Please enter your last name: ");
  scanf ("%s", last_name);

  /* Allocate memory for the full name.
     Note that we allocate a character for the blank between the first and
     last names, as well as for the terminating NULL. */
  full_name = (char *) malloc (sizeof(char) *
                               (strlen(first_name) + strlen(last_name) + 2));

  /* Concatenate the first and last name. */
  strcpy (full_name, first_name);
  strcat (full_name, " ");
  strcat (full_name, last_name);

  /* Allocate sufficient memory for the greeting. */
  greeting = (char *) malloc (sizeof(char) * (strlen(full_name) + 60));

  /* Create the greeting. */
  sprintf (greeting, "Welcome, %s. Your name is %d characters long.",
           full_name, strlen(full_name));

  /* Print the greeting. */
  printf ("\n<<< %s >>>\n", greeting);

  /* Free memory. */
  free (full_name);
  free (greeting);

  return (0);
}

