注册 登录
编程论坛 C++教室

删除指定字符串

lzbianxiao 发布于 2012-09-09 16:26, 430 次点击
想请教大家为什么程序运行后没有删除指定的字符呢。。。。
#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;

}
6 回复
#2
zklhp2012-09-09 16:36
别的不说 代码排版有待提高。。
#3
zklhp2012-09-09 16:36
而且你这个算是C++了 跑C版来问 不合适啊
#4
Ziverson2012-09-09 22:41
写的不整齐,看不懂
#5
pangding2012-09-09 23:35
楼主再自己调试调试吧,逻辑应该不是太复杂。
如果还不行,我明天有空给你看看吧。
#6
pangding2012-09-11 00:12
楼主的代码确实比较混乱,而且楼主在主串里搜子串的那段代码好像不对。其实可以直接用 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;
}

#7
pangding2012-09-11 00:14
以下是引用zklhp在2012-9-9 16:36:22的发言:

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

其实楼主除了在 main 里用了一下 cout 以外,其它都是 c。
1