*}
codea teams

StringtoIPAddr



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