c++判断IP地址是否合法

  • Post author:
  • Post category:其他


以字符串形式输入n行IP地址,格式为a.b.c.d,每个数字均在[0,255]之间,判断ip地址是否合法,是输出YES,否输出NO。

输入样例:

2

1.2.3.4

172.168.0.300

输出样例:

YES

NO

注意:string转int需要头文件:

#include <stdlib.h>
#include <iostream>
using namespace std;
int main()
{
    int n, number, len;
    int num=0;   //计数器
    int rcount=0;   //计算合法数字的个数
    string p, snum="";
    string adr[5];   //保存各个数字
    cin >> n;    //输入字符串的个数
    for(int i=0;i<n;i++)
    {
        cin >> p;
        len = p.size();
        for(int j=0;j<len;j++)
        {
            if(p[j]=='.')
            {
                adr[num++] = snum;   //将合并的字符串存入数组
                snum = "";
            }
            else
                snum += p[j];   //字符合并为字符串
        }
        adr[num] = snum;   //将最后一个小数点后的数字存入
        if(num!=3)   //判断格式是否为a.b.c.d
        {
            cout << "NO" << endl;
        }
        else
        {
            for(int j=0;j<4;j++)
            {
                number = atoi(adr[j].c_str());   //string转int
                if(number>=0 && number<=255)   //判断数字是否合法
                    rcount += 1;
            }
            if(rcount == 4)
                cout << "YES" << endl;
            else
                cout << "NO" << endl;
        }
    }
    return 0;
}



版权声明:本文为dcjmessi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。