IP地址判断有效性

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

时间: 2024-10-15 03:45:44

IP地址判断有效性的相关文章

华为OJ IP地址判断有效性

题目标题: 判断输入的字符串是不是一个有效的IP地址 详细描述: 请实现如下接口 boolisIPAddressValid(constchar* pszIPAddr) 输入:pszIPAddr 字符串 输出:true 有效的IP地址,false,无效的IP地址 约束 输入IP为XXX.XXX.XXX.XXX格式 字符串两端含有空格认为是合法IP 字符串中间含有空格认为是不合法IP 类似于 01.1.1.1, 1.02.3.4  IP子段以0开头为不合法IP 子段为单个0 认为是合法IP,0.0.

[华为上机练习题]5.IP地址判断有效性

题目 判断输入的字符串是不是一个有效的IP地址 详细描述: 请实现如下接口 boolisIPAddressValid(constchar* pszIPAddr) 输入:pszIPAddr 字符串 输出:true 有效的IP地址,false,无效的IP地址 约束 输入IP为XXX.XXX.XXX.XXX格式 字符串两端含有空格认为是合法IP 字符串中间含有空格认为是不合法IP 类似于 01.1.1.1, 1.02.3.4 IP子段以0开头为不合法IP 子段为单个0 认为是合法IP,0.0.0.0也

[华为机试练习题]5.IP地址推断有效性

题目 推断输入的字符串是不是一个有效的IP地址 具体描写叙述: 请实现例如以下接口 boolisIPAddressValid(constchar* pszIPAddr) 输入:pszIPAddr 字符串 输出:true 有效的IP地址,false,无效的IP地址 约束 输入IP为XXX.XXX.XXX.XXX格式 字符串两端含有空格觉得是合法IP 字符串中间含有空格觉得是不合法IP 相似于 01.1.1.1, 1.02.3.4 IP子段以0开头为不合法IP 子段为单个0 觉得是合法IP,0.0.

PHP中根据IP地址判断所在城市等信息

本篇文章由:http://xinpure.com/php-based-on-information-such-as-the-ip-address-in-your-city/ 获得IP地址 在 PHP 中得到当前访问者的IP地址,还是比较简单的: $ip = $_SERVER['REMOTE_ADDR'] 将IP转换为城市等信息 淘宝提供了一个IP数据接口: http://ip.taobao.com/service/getIpInfo.php?ip=ip地址 $response = file_ge

js根据IP地址判断城市

1 var province = '' ; 2 var city = '' ; 3 jQuery.getScript("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js",function(){ 4 province = remote_ip_info["province"]; 5 city = remote_ip_info["city"]; 6 alert(city) 7 }

PHP获取IP地址及根据IP判断城市实现城市切换或跳转

PHP获取IP地址 这个比较简单了,利用PHP自带函数就可以了,PHP中文手册看一下,都有现成的例子,就不过多说明了,直接上代码,A段: ? <? //PHP获取当前用户IP地址方法 $xp_UserIp = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $xp_UserIp = ($xp_UserIp) ? $xp_

ping主机的ip地址,判断以及自动安装sysstat软件包 等脚本

ping主机的ip地址.返回结果 vi pinghost.sh #!/bin/bash ping -c 3 -i 0.2 -W 3 $1 &> /dev/null if [ $? -eq 0 ] then echo "Host $1 is up." else echo "Host $1 is down." fi sh pinghost.sh ip地址 判断分数所在的区间,给出不同的分档结果 #!/bin/bash read -p "请输入您的

redis技巧--IP地址查询对应城市

场景: 根据IP地址判断用户所在地,虽然网上有好多篇了,但我记录一个一看就懂的,不用看超长文字再自己理解了. 我们有城市和IP地址段的对应关系,如: 上海: 202.127.0.0 ~ 202.127.4.255 北京: 122.200.64.0 ~ 122.207.255.255 此时如果用户的IP地址为122.202.2.0,我们就能根据这个表知道他的地址位于北京. 方法: 使用有序集合记录这个表,每个城市存储两条数据,一条是城市名对应的分数为最大IP地址.另一条是“#”加上城市名对应的分数

获取ip,判断用户所在城市

PHP获取IP地址 这个比较简单了,利用PHP自带函数就可以了,PHP中文手册看一下,都有现成的例子,就不过多说明了,直接上代码,A段: <? //PHP获取当前用户IP地址方法 $xp_UserIp = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $xp_UserIp = ($xp_UserIp) ? $xp_Us