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;
}
相关推荐
国强_dev9 分钟前
技术探讨:使用 stunnel 加密转发数据库连接时,如何获取客户端真实 IP?
数据库·网络协议·tcp/ip
三8441 小时前
文件查找/文件压缩/解压缩
linux·运维·服务器
小猪写代码1 小时前
Linux 管道(Pipeline)作业
linux·运维·服务器
桌面运维家1 小时前
如何用半缓存云桌面将服务器硬盘容量扩展至本地终端?
运维·服务器·缓存
Jurio.1 小时前
Codex App SSH 远程开发教程:本地连接远程服务器项目
服务器·ssh·远程工作·codex
Coder_Shenshen1 小时前
西门子S7CommPlus协议鉴权算法原理与流程详解
网络·后端·算法
灯厂码农3 小时前
C语言动态内存分配完全指南(malloc、calloc、realloc、free)
java·c语言·算法
wuyk5554 小时前
24. C 语言模块化:不是拆几个.c 文件那么简单
c语言·开发语言·stm32·单片机
qq_241585614 小时前
可用在中断中浮点数打印类似printf
c语言
tryCbest4 小时前
Python 文件操作
服务器·python