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

判断输入的字符串是不是一个有效的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;
}



你可能感兴趣的:(科研路)