算法 IP地址无效化

给你一个有效的 Ipv4地址 ,返回这个 IP 地址的无效化版本。所谓无效化 IP 地址,其实就是用 “[.]” 代替了每个 “.”。

示例 1:

输入:address = “1.1.1.1”

输出:“1[.]1[.]1[.]1”

示例 2:

输入:address = “255.100.50.0”

输出:“255[.]100[.]50[.]0”

算法1:遍历字符串,遇到’.’进行替换

char* defangIPaddr(char* address)
{
    
    
	char* tmp = (char*)malloc(sizeof(char) * 25);//记得主函数中free
	int i = 0, j = 0;
	while (address[i] != '\0')
	{
    
    
		if (address[i] == '.')
		{
    
    
			tmp[j] = '[';
			tmp[j + 1] = '.';
			tmp[j + 2] = ']';
			j = j + 3;
		}
		else
		{
    
    
			tmp[j] = address[i];
			j++;
		}
		i++;
	}
	tmp[j] = '\0';
	return tmp;
}

算法2:使用库函数,利用sscanf获取每个整数,再利用sprintf格式化需要的字符串

char * defangIPaddr(char * address)  

{
    
      

    int a, b, c, d;  

    char *str = (char *)malloc((strlen(address) + 7) * sizeof(char)); //记得主函数中free

    sscanf(address, "%d.%d.%d.%d", &a, &b, &c, &d);//获取每个数字  

    sprintf(str, "%d[.]%d[.]%d[.]%d" , a, b, c, d);//格式化成需要的字符串  

    return str;  
} 

猜你喜欢

转载自blog.csdn.net/Gunanhuai/article/details/109263230