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;
}