64,642
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *temp;
void del_sub_str(char**s, char* sub)
{
int len1 = strlen(*s);
int len2 = strlen(sub);
if(len1 < len2)
return;
if(strcmp(*s, sub) ==0)
{
strcpy(*s, "");
return;
}
strcpy(temp, *s);
int i ;
for( i = 0; i < len1 - len2; i++)
{
if(*temp == *sub)
{
char *t = sub;
while(*t!='\0'&&(*t++ == *temp++));
if(*t == '\0')
{
break;
}
}
temp++;
}
if(i >= len1 - len2 )
{
return;
}
strcpy((*s)+(len1 - strlen(temp) - len2), temp);
del_sub_str(s, sub);
}
void main()
{
char *s = new char[1024];
temp = new char[1024];
char *t = temp;
strcpy(s, "abcdabbaabbkk");
del_sub_str(&s, "ab");
printf("%s\n", s);
delete s;
delete t;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char * del_substr(char *src, const char *sub)
{
int len;
char *dst = src;
char *temp = src;
if (src == NULL || sub == NULL)
return NULL;
len = strlen(sub);
while((temp = strstr(src, sub)) != NULL)//搜子串是从头开始搜索
{
strcpy(temp, temp + len);
}
return dst;
}
int main()
{
char a[] = "aaaaabbbbbbbbcccc";
char b[] = "bc";
printf("%s\n", del_substr(a, b));
system("pause");
return 0;
}
char * del_substr(char *src, const char *sub)
{
char *pslow = src;
char *pfast = src;
if (src == NULL)
return NULL;
if (sub == NULL || !*sub)
return src;
for (;;)
{
if (*pfast == *sub)
{
char *psrc = pfast;
const char *psub = sub;
while (*++psrc == *++psub)
{
if (!*psub)
{
*pslow = 0;
return src;
}
}
if (!*psub)
pfast = psrc;
else
while(psub-- > sub)
*pslow++ = *pfast++;
}
else
if (!(*pslow++ = *pfast++))
return src;
}
}
char * del_substr(char *src, const char *sub)
{
int len;
char *dst = src;
char *temp = src;
if (src == NULL || sub == NULL)
return NULL;
len = strlen(sub);
while((temp = strstr(temp, sub)) != NULL)
{
strcpy(temp, temp + len);
}
return dst;
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char* findSub(char *str,const char *sub) //找子串
{
size_t lenStr=strlen(str),lenSub=strlen(sub);
for(size_t j=0;j<=lenStr-lenSub;++str,++j)
{
size_t i;
for(i=0;sub[i]!=0;++i)
{
if(str[i]!=sub[i])
{
break;
}
}
if(sub[i]==0)
{
return str;
}
}
return NULL;
}
char* delSubStr(char *str,const char *sub) //用户接口
{
char *ret=str;
str=findSub(ret,sub);
while(str!=NULL)
{
char *s;
for(s=str+strlen(sub);*s!=0;++s)
{
*(s-strlen(sub))=*s;
}
*(s-strlen(sub))=0;
str=findSub(ret,sub);
}
return ret;
}
int main()
{
char a[]="aaaaabbbbbbbbcccc";
char b[]="bc";
printf("%s\n",delSubStr(a,b));
return 0;
}