- 论坛徽章:
- 0
|
如下函数,char * StrDelete(char * dest,int pos,int len),
实现主串 dest 指定位置pos开始删除len长度的子串。
如果我用- /*for(i = 0;i<(lenDest-len-pos-1);i++)
- {
- *(dest+pos-1+i) = *(dest+pos-1+len+i);
- }*/
复制代码 代替- //移动后面子串到开始删除的地方
- for(i = pos+len-1;i<=lenDest;i++)
- {
- *(dest+i-len) = *(dest+i);
- }
复制代码 就出错。,请问错误在哪里呢?- //删除
- char * StrDelete(char * dest,int pos,int len)
- {
- int i;
- int lenDest = strlen(dest);
-
- // 如果删除长度,超过主串后面剩余长度。则只保留前面
- //字符
- if(pos+len > lenDest)
- {
- *(dest+pos-1) = '\0';
- }
-
- else{
-
- /*for(i = 0;i<(lenDest-len-pos-1);i++)
- {
- *(dest+pos-1+i) = *(dest+pos-1+len+i);
- }*/
-
- //移动后面子串到开始删除的地方
- for(i = pos+len-1;i<=lenDest;i++)
- {
- *(dest+i-len) = *(dest+i);
- }
- *(dest+lenDest-len) = '\0';
- }
- return dest;
- }
复制代码 |
|