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

来源:互联网 发布:淘宝上买被子靠谱吗 编辑:程序博客网 时间:2024/05/16 10:19

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;  }  





原创粉丝点击