isalnum(c)
{
 return isalpha(c) || isdigit(c);
}

iscntrl(c)
{
 return c < ' ' || c == 127;
}

isgraph(c)
{
 return c > ' ' && c <= '~';
}

isprint(c)
{
 return c >= ' ' && c <= '~';
}

ispunct(c)
{
 return isgraph(c) && !isalnum(c);
}

isxdigit(c)
{
 c = toupper(c);
 return isdigit(c) || c >= 'A' && c <= 'F';
}