昨天我们写了如何在串中插入另外一个串,那么今天我们来看看对应的操作:如何在串中删除指定长度的子串。也就是,从串S1中删除第pos个字符起长度为len的子串。
- 中原娱乐城
其实就是数组操作啦,把第pos个元素起的len个元素去掉即可。具体怎么去掉呢?把S[pos+len]赋值给S[pos],把S[pos+len+1]赋值给S[pos+1]……以此类推就OK了。
函数设计如下:
view source
print?
01 |
/* 初始条件: 串S存在,1≤pos≤StrLength(S)-len+1 */ |
02 |
/* 操作结果: 从串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 |
} |
测试执行代码为:
view source
print?
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 ; |
程序运行结果:
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 |
完整的可执行程序在后面给出。
时间: 2024-10-11 03:35:02