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;
}
相关推荐
bloglin9999912 小时前
scp、rsync远程文件同步
linux·运维·服务器
克莱因35812 小时前
思科 Cisco 标准ACL
网络·路由
迦南的迦 亚索的索12 小时前
LINUX环境
linux·运维·服务器
yuanjj8813 小时前
linux下调试域格CLM920 NC5等9x07平台模块 QMI拨号
linux·运维·服务器
IMPYLH13 小时前
Linux 的 printenv 命令
linux·运维·服务器·bash
SilentSamsara13 小时前
SSH 远程管理:密钥登录 + 隧道转发,一次性配置好
linux·运维·服务器·ubuntu·centos·ssh
资深数据库专家13 小时前
总账EBS 应用服务器1 的监控分析
java·网络·数据库
2501_9458374314 小时前
OpenClaw:开启 “行动 AI“ 新纪元,从聊天机器人到自主智能体的范式革命
服务器
阿正的梦工坊14 小时前
拦截网络请求:一种更优雅的数据获取方式
网络·okhttp
阿巴~阿巴~14 小时前
Git版本控制完全指南:从入门到实战(简单版)
linux·服务器·git