一定要注意IP的长度不能超过15位。
方法一:
#include<iostream>
using namespace std;
bool f(char* p)
{
int state,sum;
state=sum=0;
while(true)
{
switch(state)
{
case 0:
case 1:
case 2:
if(*p==NULL) return false;
if(*p<='9' && *p>='0' || *p=='.')
{
if(*p=='.')
{
if(sum<0 || sum>255) return false;
sum=0;
state++;
}
else
sum=sum*10+(*p-'0');
p++;
}
else return false;
break;
case 3:
if(*p<='9' && *p>='0' || *p=='.' || *p==NULL)
{
if(*p==NULL && *(p-1)=='.')
return false;
else if(*p==NULL)
{
if(sum<0 || sum>255) return false;
return true;
}
else
sum=sum*10+(*p-'0');
p++;
}
else return false;
}
}
return false;
}
int main()
{
char a[101];
while(gets(a))
{
if(f(a)&& strlen(a)<=15)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}#include<iostream>
using namespace std;
bool r(int x)
{
return x>=0&& x<=255?1:0;
}
int main()
{
char ip[101];
while(gets(ip))
{
int a,b,c,d;
char tail;
if(sscanf(ip, "%d.%d.%d.%d%c", &a, &b, &c, &d, &tail) == 4 &&!strchr(ip, '+') && strlen(ip)<=15)
{
if( r(a)&& r(b)&& r(c)&& r(d) )
puts( "YES" );
else
puts( "NO" );
}
else
puts( "NO" );
}
return 0;
}原文地址:http://blog.csdn.net/a809146548/article/details/44198001