您的位置:首页 > 其它

判断一个字符串是否为合法ip地址(ipv4)

2013-10-08 14:54 801 查看
1.判断字符串是否形如“192.168.1.1”

2.字符串两端含有空格视为合法ip,形如“ 192.168.1.1 ”

3.字符串中间含有空格视为非法ip,形如“192.168. 1.2”

4.字符串0开头视为不合法ip,形如192.168.01.1

5.字符串0.0.0.0视为合法ip



BOOL  isIPAddressValid(const char *psAddress)
{
bool bDegital;
int len = 0;
int index = 0;
int nDots = 0;
int i, j;
char *pIPbuf;
const char *pTemp = psAddress;
while(*pTemp != '\0') {
if( *pTemp == '.') {
if(*(pTemp+1) == '.') {
return FALSE;
}
nDots++;
}
pTemp++;
}
if( nDots != 3 ) {
return FALSE;
}
pTemp = psAddress;
len = strlen(psAddress);
pIPbuf  =  new char[len+1];
for(i=0; i<4; ++i) {
index = 0;
ZeroMemory(pIPbuf, len+1);
while(*pTemp != '\0') {
if(*pTemp == '.') {
break;
}
pIPbuf[index]  =  *pTemp;
pTemp++;
index++;
}
if(index == 0 || atoi(pIPbuf) < 0 || atoi(pIPbuf) > 255) {
delete pIPbuf;
return FALSE;
}
bDegital = false;
for(j=0; j<index; j++) {
if(!((pIPbuf[j] >= '0')&&(pIPbuf[j] <= '9'))) {
if(pIPbuf[j] == ' ') {
if(i == 0 && bDegital) {
delete pIPbuf;
return FALSE;
} else if(i == 3) {
if((j+1) < index) {
if((pIPbuf[j+1] >= '0')&&(pIPbuf[j+1] <= '9')) {
delete pIPbuf;
return FALSE;
}
}
} else {
delete pIPbuf;
return FALSE;
}
} else {
delete pIPbuf;
return FALSE;
}
} else {
bDegital = true;
if(index > 1 && pIPbuf[0] == '0') {
delete pIPbuf;
return FALSE;
}
}
}
if(*pTemp !='\0') {
pTemp++;
}
}
delete pIPbuf;
printf("valid ip!\n");
return TRUE;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: