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

2023-09-13 17:28:54

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',否则可能会导致以下问题:

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

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

//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;
}

更多推荐

解决npm install遇到的问题:Error while executing:

目录一、遇到问题二、解决办法方法一方法二方法三方法四一、遇到问题npmERR!Errorwhileexecuting:npmERR!D:\IT_base\git\Git\cmd\git.EXEls-remote-h-tssh://git@github.com/sohee-lee7/Squire.gitnpmERR!np

Python爬虫如何使用代理IP进行抓取

前言Python爬虫是一种非常强大的工具,可以用于抓取各种网站的数据。但是,在一些情况下,我们需要使用代理IP来完成数据抓取,如绕过IP限制或保护隐私信息等。本文将介绍如何使用Python爬虫抓取数据时使用代理IP,并提供示例代码和注意事项。一、什么是代理IP代理IP是一种充当客户端和服务器之间中间人的IP地址。客户端

python爬虫:同步模式和异步模式的区别

简单介绍区别Python爬虫可以使用同步模式和异步模式来执行任务,这两种模式有不同的工作方式和优缺点。下面是它们之间的主要区别:同步模式:同步模式是传统的编程方式,代码按照顺序执行,每个操作都会阻塞当前线程直到完成。当一个请求或操作需要时间较长时,程序将被阻塞,等待结果返回,这可能导致程序性能较低,尤其在大量IO密集型

浅谈C++|类的成员

一.类对象作为类成员类可以作为另一个类的成员代码:#include<iostream>usingnamespacestd;classphone{public:stringshouji;phone(stringshouji1):shouji(shouji1){cout<<"phone的构造函数调用"<<endl;}~ph

Java基于SpingBoot的地方废物回收机构管理系统,可作为毕业设计

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W+,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌文章目录1.简介2.技术栈3.可行性分析四系统设计第五章系统功能实现5.1管理员功能模块六、源码获取1.简介地方废物回收机构的需求和管理上的不断提升,地

第23章_瑞萨MCU零基础入门系列教程之ADC与DSP

本教程基于韦东山百问网出的DShanMCU-RA6M5开发板进行编写,需要的同学可以在这里获取:https://item.taobao.com/item.htm?id=728461040949配套资料获取:https://renesas-docs.100ask.net瑞萨MCU零基础入门系列教程汇总:https://b

Java环境搭建&安装IDE

Java环境搭建、安装IDE文章目录Java环境搭建、安装IDE1.下载JavaJDK,配置环境变量,在命令行环境下完成helloworld程序;简介安装Step0安装包准备工作Step1下载JavaJDKStep2配置环境变量配置JAVA_HOME配置Path配置CLASSPATHStep4检验运行程序2.选择一款自

C++之浅拷贝、深拷贝、拷贝构造函数、拷贝赋值运算符、自定义的深拷贝函数应用总结(二百二十九)

简介:CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀人生格言:人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.更多原创,欢迎关注:Android系统攻城狮1.前言本篇目的:理解C+

数据库锁及批量更新死锁处理

数据库锁锁间隙锁锁定的是一个间隙范围,而不会锁住某条记录。共享锁就是读锁,独占锁就是写锁,可以理解为读写锁,读读不互斥,读写互斥,写写互斥,共享锁(S锁)、独占锁(X锁)指的就是InnoDB上的行锁(记录锁)。意向锁是InnoDB引擎的一种特殊的表锁,在获取共享锁和独占锁之前必须拿到对应类型的意向锁。乐观锁和悲观锁更多

如何处理ChatGPT在文本生成中的语法错误和不合理性?

ChatGPT是一种强大的自然语言处理模型,但它并不是完美的,有时会产生语法错误或不合理的文本。这些问题可能会影响模型生成的内容的质量和可信度。在处理ChatGPT中的语法错误和不合理性时,有许多方法和策略可以采用,以下是一些详细的讨论:**1.数据清洗和预处理:**首先,可以通过对输入数据进行清洗和预处理来减少语法错

Ninja: Towards Transparent Tracing and Debugging on ARM【TEE的应用】

目录摘要引言贡献背景TrustZone和受信任的固件PMU和ETM相关工作x86上的透明恶意软件分析ARM上的动态分析工具基于仿真的系统硬件虚拟化裸机系统Trustzone相关的系统系统架构具体实现和评估可以看论文,这里不赘述了讨论总结作者:ZhenyuNingandFengweiZhang发布:USENIX时间:20

热文推荐