IP地址判断有效性 | 答题时间: 00 小时 00 分 09 秒 |
描述: | 题目标题:
详细描述: 请实现如下接口 boolisIPAddressValid(constchar* pszIPAddr) 输入:pszIPAddr 字符串 输出:true 有效的IP地址,false,无效的IP地址
约束
|
参考地址:http://www.myexception.cn/other/1904444.html
bool isIPAddressValid(const char* pszIPAddr)
{
// 请在此处实现
int len = 0, i = 0, j = 0,k = 0;
const char* tempStr = pszIPAddr;
int count = 0, n = 0;
char potStr[6] = { 0 };
if (pszIPAddr == NULL)
{
return false;
}
len = strlen(pszIPAddr);
/*去除头部的空格,然后判断是否合法*/
for (i = 0; i < len && tempStr[i] == ' '; i++);
if (i == len)
{
return false;
}
/*去除尾部的空格,判断是否合法*/
for (j = len - 1; j >= 0 && tempStr[j] == ' '; j--);
if (j == 0)
{
return false;
}
if (i >= j)
{
return false;
}
/**判断中间是否有有空格*/
for (k = i; k < j; k++)
{
if (tempStr[k] == ' ')
{
return false;
}
}
/*判断点是否出现在第一个字符或者位置是否有错*/
for (k = i; k <= j; k++)
{
if (tempStr[k] == '.')
{
potStr[count] = k;
count++;
/* 是否点出现在开始或者结尾 */
if (k == i || k == j)
{
return false;
}
/*是否有两个点挨着*/
if (k+1 < len && tempStr[k + 1] == '.')
{
return false;
}
}
}
/* 看是否是三个点 */
if (count != 3)
{
return false;
}
potStr[count++] = j + 1;
/*判断各字段是否为0开头*/
k = i;
while (n < count)
{
if (tempStr[k] == '0')
{
if (k + 1 < len && tempStr[k + 1] != '.')
{
return false;
}
}
k = potStr[n] + 1;
n++;
}
/*判断各字段是否在0~255之间*/
n = 0;
int sum = 0;
while (n < count)
{
sum = 0;
for (k = i; k < potStr[n]; k++)
{
if (tempStr[k] < '0' || tempStr[k] > '9')
{
return false;
}
sum = sum * 10 + tempStr[k] - '0';
}
if (sum > 255)
{
return false;
}
i = potStr[n] + 1;
n++;
}
return true;
}