c语言练习题55:IP 地址⽆效化

IP 地址⽆效化

题⽬描述: 给你⼀个有效的 IPv4 地址 address ,返回这个 IP 地址的⽆效化版本。 所谓⽆效化 IP 地址,其实就是⽤ "[.]" 代替了每个 "."。

• ⽰例 1: 输⼊:address = "1.1.1.1" 输出:"1[.]1[.]1[.]1"

• ⽰例 2: 输⼊:address = "255.100.50.0" 输出:"255[.]100[.]50[.]0"

• 提⽰: 给出的 address 是⼀个有效的 IPv4 地址

算法思路:

  1. 定义⼀个空字符串 ans ,并将其初始化为空;

  2. 遍历原字符串,当遇到'.'时,将'[','.',']'依次添加进新字符串;

  3. 否则将遍历到的字符直接添加进字符串 ans 。 • 这⾥需要定义另外的指针指向新字符串第⼀位作为返回值,并且要在新字符串最后⼀位添 加'\0',否则可能会导致以下问题:

  4. 访问越界:如果程序试图读取没有以空字符结尾的字符串的内容,它可能会读取字符串后⾯的内 存区域,这可能会导致程序访问超出其允许范围的内存,从⽽导致崩溃或其他错误。

  5. 错误输出:如果程序试图将没有以空字符结尾的字符串输出到标准输出(如屏幕或⽂件),它可 能会输出字符串后⾯的内存区域,这可能会导致输出错误的结果。

cpp 复制代码
//IP 地址⽆效化
char* defangIPaddr(char* address) {
	int len = strlen(address);
	char* ptr = NULL;
	//定义指针指向字符串⾸位,并且为新字符串分配内存
	char* ans = ptr = malloc(len + 6 + 1);
	//利⽤指针遍历字符串,当前字符不为'\0'时进⼊循环
	while (*address)
	{
		//判断当前字符是否为'.',是则将"[.]"添加进新字符串
		if (*address = '.') {
			*ptr++ = '[';
			*ptr++ = '.';
			*ptr++ = ']';
		}
		else {
			*ptr++ = *address;
		}
		//将指针指向字符串下⼀位字符
		address++;
	}
	//将字符串最后⼀位赋值为'\0',防⽌访问越界或错误输出
	*ptr = '\0';
	//返回指向字符串⾸位的指针
	return ans;
}
相关推荐
limengshi13839223 分钟前
通信工程学习:什么是TFTP简单文件传输协议
网络·网络协议·学习·信息与通信
叫我龙翔2 小时前
【Linux】进程间关系与守护进程
linux·运维·服务器·计算机网络
麻辣韭菜2 小时前
网络基础 【HTTP】
网络·c++·http
S hh3 小时前
【Linux】进程地址空间
java·linux·运维·服务器·学习
不穿格子衬衫4 小时前
常用排序算法(下)
c语言·开发语言·数据结构·算法·排序算法·八大排序
萧鼎4 小时前
Python调试技巧:高效定位与修复问题
服务器·开发语言·python
aqua35357423584 小时前
蓝桥杯-财务管理
java·c语言·数据结构·算法
Deryck_德瑞克4 小时前
Java网络通信—TCP
java·网络·tcp/ip
GodK7774 小时前
IP 数据包分包组包
服务器·网络·tcp/ip
千年死缓4 小时前
go+redis基于tcp实现聊天室
redis·tcp/ip·golang