2014华为机试-判断输入的字符串是不是一个有效的IP地址

来源:互联网 发布:科瑞达餐饮软件2013 编辑:程序博客网 时间:2024/05/09 22:30
判断输入的字符串是不是一个有效的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;}elsereturn 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++;elsereturn 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;elsereturn true;}pszIPAddr++;}}pszIPAddr++;}return false;}



0 0