昨天我们写了如何在串中插入另外一个串,那么今天我们来看看对应的操作:如何在串中删除指定长度的子串。也就是,从串S1中删除第pos个字符起长度为len的子串。
-
其实就是数组操作啦,把第pos个元素起的len个元素去掉即可。具体怎么去掉呢?把S[pos+len]赋值给S[pos],把S[pos+len+1]赋值给S[pos+1]……以此类推就OK了。
函数设计如下:
/* 初始条件: 串S存在,1≤pos≤StrLength(S)-len+1 */ /* 操作结果: 从串S中删除第pos个字符起长度为len的子串 */ Status StrDelete(String S,int pos,int len) { int i; if(pos < 1||pos>S[0]-len+1||len < 0) return ERROR; for(i=pos+len; i<=S[0]; i++) S[i-len]=S[i]; S[0]-=len; return OK; }
测试执行代码为:
case 8: printf("从串s1的第pos个字符起,删除len个字符,请输入pos: \n"); scanf("%d", &i); printf("再输入len: \n"); scanf("%d", &j); StrDelete(s1,i,j); StrPrint(s1); break;
程序运行结果:
1.StrAssign 生成串 2.StrLength 求串长 3.StrCompare 串比较 4.Concat 串连接 5.SubString 求子串 6.Index 求子串位置 7.StrInsert 子串插入 8.StrDelete 子串删除 0.退出 请选择你的操作: 1 串s1为:nowamagic.net 8 从串s1的第pos个字符起,删除len个字符,请输入pos: 2 再输入len: 3 nmagic.net
完整的可执行程序在后面给出。
延伸阅读
此文章所在专题列表如下:
- 数据结构里的串是什么东西?
- 如何比较串的大小
- 串的抽象数据类型ADT
- 串的顺序存储结构
- 串最基本的5个操作的C实现
- 寻找子串在主串中的位置
- 如何在串中插入串
- 如何在串中删除特定长度的子串
- 字符串中的子串替换
- 题外话:谈谈malloc()和free()
本文地址:http://www.nowamagic.net/librarys/veda/detail/2425,欢迎访问原出处。