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;
}
相关推荐
专业开发者6 小时前
Bluetooth® Mesh 网络:Friendship
网络·物联网
哇哈哈&6 小时前
gcc9.2的离线安装,支持gcc++19及以上版本
linux·运维·服务器
一条咸鱼¥¥¥6 小时前
【运维经验】使用QQ邮箱SMTP服务器设置ssms计划任务完成时邮件发送
运维·服务器·经验分享·sql·sqlserver
Benmao⁢6 小时前
C语言期末复习笔记
c语言·开发语言·笔记·leetcode·面试·蓝桥杯
菜鸟plus+6 小时前
N+1查询
java·服务器·数据库
我要添砖java6 小时前
《JAVAEE》网络编程-什么是网络?
java·网络·java-ee
独行soc7 小时前
2025年渗透测试面试题总结-275(题目+回答)
网络·python·安全·web安全·网络安全·渗透测试·安全狮
7ACE7 小时前
Wireshark TS | 关闭连接和超时重传
网络协议·tcp/ip·wireshark
Caster_Z8 小时前
WinServer安装VM虚拟机运行Linux-(失败,云服务器不支持虚拟化)
linux·运维·服务器
中屹指纹浏览器9 小时前
指纹浏览器抗检测进阶:绕过深度风控的技术实践
服务器·网络·经验分享·笔记·媒体