- 論壇徽章:
- 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;
- }
復制代碼 |
|