/* Program illustrating a simple use of scanf, including checks on the number
 * of items read and a restriction on the read string length */

#include <stdio.h>

/* Length of a mutable character buffer (string) */
#define MAXSTR   31
/* Stringify a literal without macro expansion */
#define STR(EXPR) #EXPR
/* Construct a size-limited scanf format string for a character buffer */
#define SCANSTR(LEN) "%" STR(LEN) "s"

int
main (void)
{
  int numTokens;
  double number;
  char input[MAXSTR+1];     

  printf ("Enter a number of the double type: ");
  numTokens = scanf ("%lf", &number);

  if (numTokens > 0)
    printf ("\tYou entered the number \"%lf\".\n", number);
  else
    printf ("\tYou did not enter a number.\n");
  

  printf ("Enter a word: ");
  numTokens = scanf (SCANSTR(MAXSTR), input);

  if (numTokens > 0)
    printf ("\tYou entered the word \"%s\".\n", input);
  else
    printf ("\tYou did not enter a word.\n");    

  printf ("\n\tSummary\n");
  printf ("\tnumber:  %lf\n", number);
  printf ("\tstring:  %s\n", input);

  return 0;
} // main
