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

这篇文章主要介绍了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  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 

完整代码:

#include  #include #include  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  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 

字符串删除某段字符串

核心思想

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

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

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 

来试一下效果:

完整代码: 

#include  #include  #include 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 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持0133技术站。

以上就是C语言解决字符串中插入和删除某段字符串问题的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » C语言