| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 430 人关注过本帖
标题:删除指定字符串
只看楼主 加入收藏
lzbianxiao
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-9-9
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
删除指定字符串
想请教大家为什么程序运行后没有删除指定的字符呢。。。。
#include<iostream>
using namespace std;


int delete_sub_str(const char *str, const char *sub_str,char *result_str)
{
 int m=0,i=0,j=0,k=0;

 if(strlen(str)==0||strlen(sub_str)==0||strlen(result_str)==0)
 {
  result_str[k]='\0';
  
  return -1;
 }
 if(strlen(str))
 {
  memcpy(result_str,str,strlen(str)+1);
  return 0;
 }
 while(str[i]!='\0')
 {
  int temp=i;
  
  while(( str[i]==sub_str[j])&&( str[i]!='\0')&&(sub_str[j]!='\0'))
  {
   i++;
   j++;
  }


 
  if(sub_str[j]=='\0')
  {
   m++;
  
   j=0;
   

  }
  else
  {

   i=temp;
   result_str[k++]= str[i++];
   j=0;

  }


  

 


 }

 result_str[k]='\0';
 return m;

}

 

int main()
{
 const char str[50]="abcde123abcd123";
 char sub_str[50]="123";
 char result_str[50];

 
 int m= delete_sub_str(str,sub_str,result_str);

 
 cout<<"result="<<result_str;
 cout<<endl;
 cout<<m<<endl;

 


 return 0;

}
搜索更多相关主题的帖子: 字符串 return include 
2012-09-09 16:26
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:7 
别的不说 代码排版有待提高。。
2012-09-09 16:36
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
而且你这个算是C++了 跑C版来问 不合适啊
2012-09-09 16:36
Ziverson
Rank: 2
来 自:湖北十堰
等 级:论坛游民
帖 子:14
专家分:12
注 册:2012-9-9
收藏
得分:7 
写的不整齐,看不懂

新手,基础相当不牢,求指教。
2012-09-09 22:41
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
楼主再自己调试调试吧,逻辑应该不是太复杂。
如果还不行,我明天有空给你看看吧。
2012-09-09 23:35
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
楼主的代码确实比较混乱,而且楼主在主串里搜子串的那段代码好像不对。其实可以直接用 strstr 呀。
程序代码:
#include <iostream>
#include <cstring>
using namespace std;


int delete_sub_str(const char *str, const char *sub_str, char *result_str)
{
    if(str == NULL || sub_str == NULL || result_str == NULL)
        return -1;

    int m = 0, rlen = strlen(sub_str);

    const char *p = strstr(str, sub_str);
    for (; p; m++) {
        memcpy(result_str, str, p-str);
        result_str += p-str;
        str = p + rlen;
        p = strstr(str, sub_str);
    }

    strcpy(result_str, str);
    return m;
}

int main()
{
    const char str[50]="abcde123abcd123";
    const char sub_str[50]="123";
    char result_str[50];

    int m= delete_sub_str(str, sub_str, result_str);
    cout << "match " << m << " times: " << result_str << endl;

    return 0;
}

2012-09-11 00:12
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:7 
以下是引用zklhp在2012-9-9 16:36:22的发言:

而且你这个算是C++了 跑C版来问 不合适啊

其实楼主除了在 main 里用了一下 cout 以外,其它都是 c。
2012-09-11 00:14
快速回复:删除指定字符串
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024965 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved