判断输入的字符串是不是一个有效的IP地址
请实现如下接口
bool isIPAddressValid(const char* pszIPAddr)
输入:pszIPAddr 字符串
输出:true 有效的IP地址,false,无效的IP地址
约束条件:
输入IP为XXX.XXX.XXX.XXX格式
字符串两端含有空格认为是合法IP
字符串中间含有空格认为是不合法IP
类似于 01.1.1.1, 1.02.3.4 IP子段以0开头为不合法IP
请实现如下接口
bool isIPAddressValid(const char* pszIPAddr)
输入:pszIPAddr 字符串
输出:true 有效的IP地址,false,无效的IP地址
约束条件:
输入IP为XXX.XXX.XXX.XXX格式
字符串两端含有空格认为是合法IP
字符串中间含有空格认为是不合法IP
类似于 01.1.1.1, 1.02.3.4 IP子段以0开头为不合法IP
子段为单个0 认为是合法IP,0.0.0.0也算合法IP
bool isIPAddressValid(const char *pszIPAddr)
{
char temp[5] = "\0";
int i = 0, j;
int count = 0;
int number;
if (NULL == pszIPAddr)
return false;
while (*pszIPAddr != '\0')
{
if (count == 0 && i == 0 && *pszIPAddr == ' ')
{
pszIPAddr++;
continue;
}
if (count < 3)
{
if (*pszIPAddr <= '9' && *pszIPAddr >= '0')
{
temp[i++] = *pszIPAddr;
if (i > 3)
return false;
}
else
{
if (*pszIPAddr == '.')
{
if (i == 0)
return false;
temp[i] = '\0';
number = 0;
if (temp[0] == '0' && i > 1)
return false;
for (j = 0; j < i; j++)
{
number = 10 * number + temp[j] - '0';
}
if (number > 255)
return false;
count++;
i = 0;
}
else
return false;
}
}
else
{
i = 0;
while (count == 3)
{
if (*pszIPAddr <= '9' && *pszIPAddr >= '0')
{
temp[i++] = *pszIPAddr;
if (i > 3)
return false;
}
else
{
if (i == 0)
return false;
while (*pszIPAddr != '\0')
{
if (*pszIPAddr == ' ')
pszIPAddr++;
else
return false;
}
if (temp[0] == '0' && i > 1)
return false;
temp[i] = '\0';
number = 0;
for (j = 0; j < i; j++)
{
number = 10 * number + temp[j] - '0';
}
if (number > 255)
return false;
else
return true;
}
pszIPAddr++;
}
}
pszIPAddr++;
}
return false;
}