IP地址判断有效性

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

#include "IPAddressValid.h"
#include <stdio.h>
#include <iostream>
using namespace std;

bool isOnePartValid(const char* cOnePartIPAddr, int len)//判断一个字段是不是合法
{
    if (NULL == cOnePartIPAddr || len <= 1)
    {
        return false;
    }
    if ('0' == cOnePartIPAddr[0] && 2 != len)//以0开头的字段不为0非法
    {
        return false;
    }
    int ipAddr =0;
    int iCur = 0;

    while ('\0' != cOnePartIPAddr[iCur])
    {
        if ('0'<= cOnePartIPAddr[iCur] && cOnePartIPAddr[iCur] <='9')
        {
            ipAddr = ipAddr*10 + cOnePartIPAddr[iCur]- '0';
        }
        else
        {
            return false;
        }
        iCur++;
    }
    if (ipAddr >= 0 && ipAddr <=255)
    {
        return true;
    }
    else
    {
        return false;
    }
}


bool isIPAddressValid(const char* pszIPAddr)
{
    // 请在此处实现
    if (NULL == pszIPAddr)
    {
        return false;
    }
    int l = strlen(pszIPAddr);
    if (l <7 || l > 15)
    {
        return false;
    }
    int iCur =0;
    int iIpLen =0;
    while (' ' == pszIPAddr[iCur])//去除前面空格
    {
        iCur++;
        iIpLen++;
    }
    int begin = iCur;
    while ('\0' != pszIPAddr[iCur])
    {
        iCur++;
        iIpLen++;
    }
    int end = iIpLen;
    for (int i = iIpLen-1 ; i >= begin; --i)//去除字符串尾部的空格
    {
        if (' ' == pszIPAddr[i])
        {
            end--;
        }
        else
        {
            break;
        }
    }
    char cOnePart[128];
    int count = 0;
    for (int i = begin; i <= end; i++)
    {
        memset(cOnePart, 0, sizeof(char) * 128);
        int iOnePartCur =0;
        int onePartLen =0;
        while (i < end && '.' != pszIPAddr[i])
        {
            cOnePart[iOnePartCur] = pszIPAddr[i];
            iOnePartCur++;
            i++;
            onePartLen++;
        }
        cOnePart[iOnePartCur] = '\0';
        onePartLen++;
        if (!isOnePartValid(cOnePart, onePartLen))
        {
            return false;
        }
        else
        {
            count ++;
        }
    }
    if (4 == count )
    {
        return true;
    }
    else
    {
        return false;
    }
}

int main()
{
    const char* pazIPAddress = "100.0.0.";

    bool isIP = isIPAddressValid(pazIPAddress);
    return 0;
}