昨天我們寫了如何在串中插入另外一個串,那么今天我們來看看對應(yīng)的操作:如何在串中刪除指定長度的子串。也就是,從串S1中刪除第pos個字符起長度為len的子串。
其實就是數(shù)組操作啦,把第pos個元素起的len個元素去掉即可。具體怎么去掉呢?把S[pos+len]賦值給S[pos],把S[pos+len+1]賦值給S[pos+1]……以此類推就OK了。
函數(shù)設(shè)計如下:
01
/* 初始條件: 串S存在,1≤pos≤StrLength(S)-len+1 */
02
/* 操作結(jié)果: 從串S中刪除第pos個字符起長度為len的子串 */
03
Status StrDelete(String S,int pos,int len)
04
{
05
int i;
06
if(pos < 1||pos>S[0]-len+1||len < 0)
07
return ERROR;
08
for(i=pos+len; i<=S[0]; i++)
09
S[i-len]=S[i];
10
S[0]-=len;
11
return OK;
12
}
測試執(zhí)行代碼為:
1
case 8:
2
printf("從串s1的第pos個字符起,刪除len個字符,請輸入pos: \n");
3
scanf("%d", &i);
4
printf("再輸入len: \n");
5
scanf("%d", &j);
6
StrDelete(s1,i,j);
7
StrPrint(s1);
8
break;
程序運行結(jié)果:
view source print?
01
1.StrAssign 生成串
02
2.StrLength 求串長
03
3.StrCompare 串比較
04
4.Concat 串連接
05
5.SubString 求子串
06
6.Index 求子串位置
07
7.StrInsert 子串插入
08
8.StrDelete 子串刪除
09
0.退出
10
請選擇你的操作:
11
1
12
串s1為:nowamagic.net
13
14
8
15
從串s1的第pos個字符起,刪除len個字符,請輸入pos:
16
2
17
再輸入len:
18
3
19
nmagic.net
完整的可執(zhí)行程序在后面給出。
更多信息請查看IT技術(shù)專欄