您的位置:首页 > 运维架构 > Linux

Linux基础day6,c补习,删除字符串中指定字符串,考虑到删除后可能会产生新的子字符串

2013-11-25 18:50 381 查看
老师布置了一道题,感觉比较可以。

例如母字符串为:abababababccccc,子字符串为abc。删除中间的abc后,会产生新的abc子字符串,我们应该再次遍历该母字符串,查找是否产生了新的子字符串。

具体程序如下(这里说明下,用自己的strcat函数,因为库函数的strcat有问题,不能用在本身的字符串身上)

//删除字符串中的子串
#include
#include
#include
int delestr(char str[],char * cstr);
char * mystrcat(char * str1,const char * str2);
int main (int argc, char *argv[])
{
char str[]="dfdsabcababababcccccccdfds";
char * cstr = "abc";
delestr(str,cstr);
printf("%s\n",str);
return 0;
}
int delestr(char str[],char * cstr)
{
char * p = str;
bool flag = true;
int len = strlen(cstr);
while(flag)
{
flag=false;   //准备结束这次循环,如果下面没有找到子字符串,这次while就完了。
while(*str)
{
if(*str == *cstr)
{
if(strncmp(str,cstr,len) == 0)
{
*str = 0;
mystrcat(p,str+len);
flag = true;    //如果删除了,就可能产生新的子字符串,置位flag,再次循环查找
}
}
str++;
}
str = p;
}
return 0;
}
char * mystrcat(char *dest, const char *src)
{
char *p = dest;
while(*dest)
dest++;
while(*dest++ = *src++);
return p;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息