q2d.c

by Dave Aronson

/* dotted quad to decimal converter */
/* COPYRIGHT 1998, David J. Aronson */
/* License freely granted for all non-commercial use */
/* All other rights reserved */

#include <stdio.h>
#include <stdlib.h>


unsigned long q2d (char *s);


void main (int argc, char *argv[])
{
   int  argNum;

   /* for each arg */
   for (argNum = 1; argNum < argc; argNum++)
   {
      /* print it and equivalent */
      printf ("%s = %lu\n", argv[argNum], q2d (argv[argNum]));
   }
}


/* convert a dotted quad STRING to number */

unsigned long q2d (char *s)
{
   int                  quadNum;
   int                  quadTot;
   unsigned long        total = 0;

   /* for each quad */
   for (quadNum = 0; quadNum < 4; quadNum++)
   {

      /* reset total for this quad */
      quadTot = 0;

      /* for each char in quad, multiply quad-so-far by ten and add digit */
      while ('\0' != *s && '.' != *s) quadTot = quadTot * 10 + (*(s++) - '0');

      /* skip over delimiter */
      s++;

      /* add it into grand total */
      total = total * 256 + quadTot;
   }

   return total;
}