我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C语言解决字符串中插入和删除某段字符串问题

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C语言解决字符串中插入和删除某段字符串问题

字符串中插入某段字符

核心思想

已知插入字符串的长度len,将插入的位置的后面的字母统统往后移动len个长度。

最后将插入的字符串插入到被插入的字符串。

我们先定义(注意:这里我不考虑极端的情况,如字符串溢出的问题!)

char arr[50],str[20];//arr是被插入的函数,str是插入的函数

我们在确定几个int数

int index, lens, size, lena,j;

其中index是被插入字符串的位置,lens是str的长度,lena是arr的长度,size是arr的index后面要移动lens个长度

接着我们来去这str和arr

	gets_s(arr);
	printf("输入插入的位置和插入的字符串:");
	scanf_s("%d", &index);
	getchar();//清除缓冲区
	gets_s(str);

于是,我们确定长度,在确定要将index后面的所有字母都要挪动size次,才能有足够的空间才存入lens的长度

	lena = strlen(arr);//被 插入字符串个数
	lens = strlen(str);//要插入字符串个数
	size =lens;//一共要挪动的size次数

我们再定义一个变量indexx,作用是辅助作用,等会就懂了

int indexx = index;

最后我们用二层循环

for (int i = 0; i < size; i++) {
		for (j = lena; j > indexx; j--) {
			arr[j] = arr[j - 1];//前一个位置给后一个赋值
		}
		//因已经挪动位置了,故indexx和lena都要加1,才能保证第二个for能循环lena-indexx次
		//因为要挪动的是index后面的字母
		lena++;//arr长度要加1
		indexx++;
	}

末尾放结束语句

arr[lena] = '\0';//结束字符串

最后插入str

//最后给插入str
	int k = 0;
	for (int j = index,k=0; j < index + lens; j++,k++) {
		arr[j] = str[k];
	}
	puts(arr);

完整代码:

#include <stdio.h>
#include<stdlib.h>
#include <string.h>
int main() {
	//字符串的插入操作
	int index, lens, size, lena,j;
	char arr[50],str[20];//arr是被插入的函数,str是插入的函数
	gets_s(arr);
	printf("输入插入的位置和插入的字符串:");
	scanf_s("%d", &index);
	getchar();//清除缓冲区
	gets_s(str);
	lena = strlen(arr);//被插入字符串个数
	lens = strlen(str);//要插入字符串个数
	size =lens;//一共要挪动的size次数
	//用另一个一个变量,来代替这个变量
	int indexx = index;
	for (int i = 0; i < size; i++) {
		for (j = lena; j > indexx; j--) {
			arr[j] = arr[j - 1];//前一个位置给后一个赋值
		}
		//以为已经挪动位置了,所以indexx和lena都要加1,才能保证第二次第二个for能循环lena-index次
		//因为要挪动的是index后面的字母
		lena++;
		indexx++;
	}
	arr[lena] = '\0';//结束字符串
	//最后给插入str
	int k = 0;
	for (int j = index,k=0; j < index + lens; j++,k++) {
		arr[j] = str[k];
	}
	puts(arr);
	return 0;
}

字符串删除某段字符串

核心思想

两层循环,第一层是移动的程度,第二层是移动的字母个数

我们先定义一个字符串 计算他的长度

char arr[50];
	gets_s(arr);
	int len = strlen(arr);

确定:

int index,lens,k,movestar;

其中 index是插入位置,movestar是要被移动的字母的位置,lens是删除的长度

printf("输入您要删除的开始位置和字符长度");
	scanf_s("%d %d", &index, &lens);

如果遇到极端情况,则

if (lens + index  > len) {
		printf("删除长度过大!");
		return 0;
	}

 既然要移动字母,我们肯定得先知道要移动多少个字母,于是定义res

int res = len - index - lens + 1;//要往前挪动的字母个数

res加1使用为我多减掉了1

就不如说我在abcdefg中删除cd,则index就是3,lens就是2,movesatr就是e的位置,res就是efg这三个被移动的字母

要用两层循环

	int lenss = lens;//辅助变量
	for (int i = 0; i < lenss; i++) {
		movestar = index + lens - 1;//要开始往前挪动字母的所在位置
		for (int j = movestar,k=0; k<res; j++,k++) {
			arr[j - 1] = arr[j];
		}
		arr[--len] = '\0';//置零
		lens--;//因为movesatr的位置会改变,所以要-1
	}

来试一下效果:

完整代码: 

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main() {
	int index,lens,k,movestar;
	char arr[50];
	gets_s(arr);
	int len = strlen(arr);
	printf("输入您要删除的开始位置和字符长度");
	scanf_s("%d %d", &index, &lens);
	if (lens + index  > len) {
		printf("删除长度过大!");
		return 0;
	}
	int res = len - index - lens + 1;//要往前挪动的字母个数
	int lenss = lens;//辅助变量
	for (int i = 0; i < lenss; i++) {
		movestar = index + lens - 1;//要开始往前挪动字母的所在位置
		for (int j = movestar,k=0; k<res; j++,k++) {
			arr[j - 1] = arr[j];
		}
		arr[--len] = '\0';
		lens--;
	}
	puts(arr);
    return 0;
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C语言解决字符串中插入和删除某段字符串问题

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C语言解决字符串中插入和删除某段字符串问题

这篇文章主要介绍了C语言解决字符串中插入和删除某段字符串问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-06

c语言如何删除字符串中相同字符

要删除字符串中的相同字符,可以使用两层循环来遍历字符串,并比较每个字符是否与后面的字符相同。如果相同,则将后面的字符删除,直到字符串末尾。以下是一个示例代码:```c#include #include void removeDuplicat
2023-09-12

c语言如何删除字符串中的指定字符

可以使用循环遍历字符串,将不需要删除的字符拷贝到一个新的字符串中,最后将新的字符串赋值给原字符串。以下是一个示例代码:```c#include #include #include void deleteChar(char* str, cha
2023-08-24

c语言怎么删除字符串中的指定字符

在C语言中,可以通过循环遍历字符串并判断字符是否是指定字符,然后将非指定字符复制到新的字符串中,从而删除字符串中的指定字符。以下是一个示例代码:```c#include #include void removeChar(char *str,
2023-08-16

C语言 中怎么删除字符串空白符

C语言 中怎么删除字符串空白符,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。/***********************************************
2023-06-03

C语言倒置字符串问题怎么解决

这篇文章主要介绍“C语言倒置字符串问题怎么解决”,在日常操作中,相信很多人在C语言倒置字符串问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言倒置字符串问题怎么解决”的疑惑有所帮助!接下来,请跟
2023-07-05

c语言中string怎么删除指定字符串

在C语言中,可以使用以下方法删除指定的字符串:1. 使用strcpy()函数:可以先将指定字符串后面的字符串向前移动,然后使用strcpy()函数将移动后的字符串复制回原数组中。示例代码如下:```c#include #include vo
2023-09-15

C语言删除输入字符串中的空格示例代码

最近工作中遇到了需求,要删除字符串中的所有空格,就要筛选出空格字符,这篇文章主要给大家介绍了关于利用C语言删除输入字符串中的空格的相关资料,需要的朋友可以参考下
2022-12-08

c语言怎么读入字符串中的数字和字母

在 c 语言中,可以使用 scanf() 函数从字符串中读入数字和字母。1. 读入数字: (1)如果数字用空格分隔,使用 %d 格式说明符。 (2)如果数字不分隔,使用 %d 并指定宽度。 2. 读入字母: (1)使用 %c 读入单个字符。
c语言怎么读入字符串中的数字和字母
2024-05-14

C语言如何从字符串的两端删除空白字符和其他预定义字符

在C语言中,从字符串的两端删除空白和其他字符有几种方法:使用strtrim()函数,专用于删除预定义字符。使用正则表达式匹配和替换指定模式的字符。手动循环找到非空白字符的范围并提取子字符串。每种方法各有优缺点,可根据具体情况选择最合适的解决方案。
C语言如何从字符串的两端删除空白字符和其他预定义字符
2024-04-02

C语言字符串处理的惊天大坑问题解决

这篇文章主要为大家介绍了C语言字符串处理的惊天大坑问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-20

C++中字符串处理问题的解决方法

C++中字符串处理问题的解决方法概述:在C++编程中,字符串的处理是一个常见的问题,涉及到字符串的截取、拼接、查找、替换等操作。本文将介绍几种常用的解决方法,并提供具体的代码示例。一、字符串截取字符串截取是指从一个字符串中获取一部分子串。在
2023-10-22

C++怎么解决字符串中第二大数字问题

本篇内容主要讲解“C++怎么解决字符串中第二大数字问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么解决字符串中第二大数字问题”吧!字符串中第二大的数字给你一个混合字符串 s ,请你返
2023-07-04

深入了解C语言中的字符串和内存函数

本文主要带大家来学习一些常用的库函数。有了这些库函数,我们可以更加方便地操作字符串和内存,从而提升我们的编码效率。话不多说,我们开始吧
2022-11-13

C++中字符串处理问题及解决方法概述

C++中字符串处理问题及解决方法概述摘要:字符串处理是编程中常见的任务之一,尤其在C++中,对字符串的操作有时会遇到一些困难。本文将概述C++中常见的字符串处理问题,并提供相应的解决方法,并附上具体的代码示例。字符串长度超过限制问题描述:当
2023-10-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录