字符串的查找、排序、删除

//实现字符串的查找、删除、替换
# include<stdio.h>
# include<string.h>

//字符串的查找
int find(char *str1,char *str2)//在str1中寻找str2
{
    int len1=strlen(str1);
    int len2=strlen(str2);
    int i=0,index;
    if(len1<len2)
        return -1;//查找失败
    else
    {
        index=0;
        for(i=0;i<len1;i++)
        {
          if(str1[i]==str2[index])
          {
              index++;
              if(index==len2)
                  return i-len2+1;//返回第一次碰到str2的索引
          }
          else
          {
              index=0;
          }
        }
        
        return -1;
    }
}
//字符串的删除
char* delet(char* str,int start,int step)//在str1中删除从start到start+step的子串
{
    int len=strlen(str);
    int i=0;
    if(len<start+step)
        return NULL;//char *返回值NULL
    else
    {
       for(i=start;i<len-step;i++)
       {
           str[i]=str[i+step];
       }
       str[len-step]='\0';//末尾补0,补全新的字符串
       return str;
    }
}

//字符串的替换
char *replace(char *str1,int start,char *str2)
{
   int len1=strlen(str1);
   int len2=strlen(str2);
   int i=0,index=0;
   if(len1<start+len2)
       return NULL;
   else
   {
      for(i=start;i<start+len2;i++)
      {
         str1[i]=str2[index++];
      }

      str1[len1]='\0';
      return str1;
   }

}
int main()
{
    char str1[40];
    char str2[40];
    //删除重复子串
    while(scanf("%s%s",str1,str2)!=EOF)
    {
        int t=find(str1,str2);
    //    printf("%d\n",t);
        while(t!=-1)
        {
            //删除
            char *p=delet(str1,t,strlen(str2));
            t=find(p,str2);
        }
        printf("%s\n",str1);
    }

    return 0;
}

 

posted @ 2018-04-08 11:15  xzhws  阅读(483)  评论(0编辑  收藏  举报