码迷,mamicode.com
首页 > 其他好文 > 详细

IP地址判断有效性

时间:2015-01-07 15:00:58      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:华为入职练习 华为oj

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

IP地址判断有效性

标签:华为入职练习 华为oj

原文地址:http://blog.csdn.net/xiaohanstu/article/details/42491569

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!