首页 > 其他 > 详细

判断IP地址是否合法

时间:2014-04-26 19:59:21      阅读:547      评论:0      收藏:0      [点我收藏+]

今天写了个判断IP地址是否合法的程序,主要是锻炼对字符串的处理,一些主要的约束条件如下:

1、输入IP为XXX.XXX.XXX.XXX格式
2、字符串两端含有空格认为是合法IP
3、字符串中间含有空格认为是不合法IP
4、类似于 01.1.1.1, 1.02.3.4  IP子段以0开头为不合法IP
5、子段为单个0 认为是合法IP,0.0.0.0也算合法IP

代码如下:

#include <iostream>
#include <string.h>

using namespace std;


bool isinteger(char ch)
{
    if(ch>=‘0‘&&ch<=‘9‘)
        return true;
    else
        return false;
}

int chtoint(char *p)
{
    int data=0;
    while(*p!=‘\0‘)
    {
        data=data*10+*p-‘0‘;
        p++;
    }
    return data;
}


bool isIPAddressValid(const char* pszIPAddr)
{
    
    if(pszIPAddr==NULL)
        return false;
    int datalen=0,pointlen=0;
    int len=strlen(pszIPAddr)-1;
    cout<<len<<endl;
    if(len==-1)
        return false;

    char *temp=new char[len+1];
    int i=0,k=0;

    while(pszIPAddr[i]==‘ ‘)
        i++;
    while(pszIPAddr[len]==‘ ‘)
        len--;
    len++;

    while(i<len)
    {

        if(pszIPAddr[i]==‘.‘)
        {
            pointlen++;
            if(pointlen>3||pointlen!=datalen)
                return false;
            i++;
        }
        else
        {
            if(!isinteger(pszIPAddr[i])||pszIPAddr[i]==‘ ‘)
                return false;
            while(i<len&&pszIPAddr[i]!=‘.‘)
            {

                 temp[k++]=pszIPAddr[i];
                 if(k==5)
                    return false;
                 i++;
            }

            temp[k]=‘\0‘;
            if(temp[0]==‘0‘&&k>=2)
                return false;
            else
            {
            if(chtoint(temp)>=0&&chtoint(temp)<=255)
                datalen++;
            else
                return false;
            }
            k=0;
            if(datalen>4)
                return false;

        }

    }
    if(datalen==4&&pointlen==3)
        return true;
    else
        return false;
}

int main()
{

    const char* intputstr =" .0.0.1" ;

	bool flag=isIPAddressValid(intputstr);
    cout<<flag<<endl;
    return 0;
}


判断IP地址是否合法,布布扣,bubuko.com

判断IP地址是否合法

原文:http://blog.csdn.net/longhopefor/article/details/24524529

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!