在WindowsXP下,VC6.0编译器 通过
#include "stdafx.h"
#include <iostream.h>
#include <string.h>
bool IsValidIP(const char* ipaddr)
{
int a=0,len=0,b,ndot=0,flags=0;
len=strlen(ipaddr);
for(int i=0;i<len;i++)
{
b=ipaddr[i]-48;
if(b==-2){ //"."
if(a>255||flags==0)
return 0;
else {a=0; ndot++;flags=0;}
}
else if(b<0||b>9)
return 0;
else
{ a=a*10+b;flags=1;}
}
if(ndot!=3||a>255||flags==0)
return 0;
else
return 1;
}
int main(int argc, char* argv[])
{
cout <<IsValidIP("127.a.0.250")<<endl;
cout<<IsValidIP("127a.0.0.1")<<endl;
cout<<IsValidIP(".16.17.254")<<endl;
cout<<IsValidIP("260.16.17.0")<<endl;
cout<<IsValidIP("172.0.1")<<endl;
cout<<IsValidIP("12")<<endl;
return 0;
}
我没有说明了!
下面是我在Linux下写的,刚学会,这是C++写的:
// IPCheck.cpp
#include <iostream>
#include <string>
bool IsValidIP(const char* ipaddr)
{
int a=0,len=0,b,ndot=0,flags=0;
len=strlen(ipaddr);
for(int i=0;i<len;i++)
{
b=ipaddr[i]-48;
if(b==-2){
if(a>255||flags==0)
return 0;
else {a=0; ndot++;flags=0;}
}
else if(b<0||b>9)
return 0;
else
{ a=a*10+b;flags=1;}
}
if(ndot!=3||a>255||flags==0)
return 0;
else
return 1;
}
int main()
{
std::cout<<IsValidIP("127.a.0.250")<<std::endl;
std::cout<<IsValidIP("127a.0.0.1")<<std::endl;
std::cout<<IsValidIP(".16.17.254")<<std::endl;
std::cout<<IsValidIP("260.16.17.0")<<std::endl;
std::cout<<IsValidIP("172.0.1") <<std::endl;
std::cout<<IsValidIP("12")<<std::endl;
std::cout<<IsValidIP("127.16.17.102")<<std::endl;
std::cout<<IsValidIP("127.16.17.245.12")<<std::endl;
return 0;
}
测试如下:
chrissherry@chrissherry:~/Desktop$ g++ IPCheck.cpp -o IPCheck
chrissherry@chrissherry:~/Desktop$ ./IPCheck
0
0
0
0
0
0
1
0