亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2506 | 回復: 6
打印 上一主題 下一主題

[C] 【疑惑】指定位置刪除指定長度子串的 一段程序 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2014-08-05 22:07 |只看該作者 |倒序瀏覽
如下函數,char * StrDelete(char * dest,int pos,int len),
實現主串 dest 指定位置pos開始刪除len長度的子串。

如果我用
  1.         /*for(i = 0;i<(lenDest-len-pos-1);i++)
  2.                 {
  3.                         *(dest+pos-1+i) = *(dest+pos-1+len+i);       
  4.                 }*/
復制代碼
代替
  1.         //移動后面子串到開始刪除的地方
  2.                 for(i = pos+len-1;i<=lenDest;i++)
  3.                 {
  4.                         *(dest+i-len) = *(dest+i);
  5.                 }
復制代碼
就出錯。,請問錯誤在哪里呢?
  1. //刪除
  2. char * StrDelete(char * dest,int pos,int len)
  3. {
  4.         int i;
  5.         int lenDest = strlen(dest);
  6.        
  7.         // 如果刪除長度,超過主串后面剩余長度。則只保留前面
  8.         //字符
  9.         if(pos+len > lenDest)
  10.         {
  11.                 *(dest+pos-1) = '\0';
  12.         }
  13.                
  14.         else{
  15.                
  16.                 /*for(i = 0;i<(lenDest-len-pos-1);i++)
  17.                 {
  18.                         *(dest+pos-1+i) = *(dest+pos-1+len+i);       
  19.                 }*/
  20.                
  21.                 //移動后面子串到開始刪除的地方
  22.                 for(i = pos+len-1;i<=lenDest;i++)
  23.                 {
  24.                         *(dest+i-len) = *(dest+i);
  25.                 }
  26.                 *(dest+lenDest-len) = '\0';
  27.         }
  28.         return dest;
  29. }
復制代碼

論壇徽章:
0
2 [報告]
發(fā)表于 2014-08-05 22:32 |只看該作者
char * StrDelete(char * dest,int pos,int len)
{
    int i=pos+len;
    int index=0;
    for(;*(dest+i) != '\0'; ++i)
    {        
         *(dest+pos+index)=*(dest+i);
         ++index;
    }
    *(dest+pos+index)='\0';
    return dest;
}

論壇徽章:
0
3 [報告]
發(fā)表于 2014-08-05 22:32 |只看該作者
大概思路是這樣

論壇徽章:
2
2015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
4 [報告]
發(fā)表于 2014-08-05 22:33 |只看該作者
本帖最后由 cobras 于 2014-08-05 22:48 編輯

char * StrDelete(char * dest,int pos,int len)
{
  strcpy(dest+pos, dest+pos+len);
  return dest;
}

論壇徽章:
0
5 [報告]
發(fā)表于 2014-08-05 22:36 |只看該作者
本帖最后由 kalo425 于 2014-08-05 22:40 編輯

謝謝你的回答,你的那個寫法是錯的。相當于前面pos的字符都丟失了。

我的主要疑惑是不知道下面這句錯在哪里了··
我定義的字符的一個索引為1
  1. for(i = 0;i<(lenDest-len-pos-1);i++)
  2.                 {
  3.                         *(dest+pos-1+i) = *(dest+pos-1+len+i);        
  4.                 }
復制代碼
回復 4# cobras


   

論壇徽章:
2
2015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
6 [報告]
發(fā)表于 2014-08-05 22:50 |只看該作者
打快了,筆誤

論壇徽章:
2
2015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
7 [報告]
發(fā)表于 2014-08-05 22:51 |只看該作者
把strcpy展開就是答案。自己看看吧
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP