关于atoi的应用,atoi把char字符串转换成int数值,这里有一个atoi的典型应用,即判断ip地址的合法性,需要把某个区域的char*转换成int判断范围,因此需要使用atoi函数,它的定义如下:int atoi ( const char * str );

unsigned short parse_ip(char* ip)
{
    // judge by length of ip address
    unsigned short len = strlen(ip);
    if (len < 7 || len > 15)
        return 0;

    char tmp[16] = {0};
    unsigned char i = 0;
    unsigned char j = 0;
    unsigned char dot_counter = 0;
    while(ip[j] != 0)
    {
        if (ip[j] >= '0' && ip[j] <= '9')
        {
            // digit
            tmp[i] = ip[j];
            if (strlen(tmp) > 3)
                return 0;  // 出现某个区域数字大于4位
            i++;
            j++;
            continue;
        }
        else if (ip[j] == '.')
        {
            // dot
if (i == 0)
return 0;
            dot_counter++;
unsigned short ai = atoi(tmp);
            if ( ai > 255 || ai < 0 )
                return 0;  // 某个区域数字不符合约束
            i = 0;
memset(tmp, 0, sizeof(tmp));
            j++;
            continue;
        }
        else
            return 0;      // 出现非法符号
    }

    if ( dot_counter != 3 )
        return 0;
if (atoi(tmp) > 255 || atoi(tmp) < 0)
return 0;
    return len;
}



Leave a Reply.