typedef struct
{
int v[4];
} IPAddr;
void StringToIPAddr(char *str_in, IPAddr *ipaddr)
{
unsigned char v;
char *temp;
char *org = NULL;
char *szStr = (char*)malloc(strlen(str_in) + 2);
unsigned char byteIndex;
strcpy(szStr, str_in);
temp = szStr;
org = szStr;
byteIndex = 0;
while ((v = *szStr))
{
if (v == '.')
{
*szStr++ = '\0';
ipaddr->v[byteIndex++] = atoi(temp);
temp = szStr;
}
else if (v < '0' || v > '9')
{
free(szStr);
szStr = NULL;
return;
}
szStr++;
}
ipaddr->v[byteIndex] = atoi(temp);
szStr = org;
if (szStr)
{
free(szStr);
szStr = NULL;
}
return;
}