c之PAT刷题---删除字符串中的特定子串

改了好久还是没有全过,等明天再看吧!好好休息,明天继续。

#include<stdio.h>

#include<string.h>
char *delete(char str1[80],char str2[80]){
    int len1,len2,l;//l记录出现字符相同的起始位置
    len1=strlen(str1);
    len2=strlen(str2);
    for(int i=0;str1[i]!='\0';i++){
            if(str1[i]==str2[0]){
                l=i;//记下相同字符出现的位置
                int num=0;
                for(int k=0;k<len2;k++){
                    if(str1[l]==str2[k]){
                        num++;
                        l++;
                    }
                }    //判断是不是完全相同
                //接下来,从i开始,使所有的字符都向前移动三位;
                if(num==len2){//如果符合子串,那么把后面的字符往前推进,挤掉子串
                    for(int k=i;str1[k]!='\0';k++)
                            str1[k]=str1[k+num];
                }
            }
        }
        return str1[80];
}
int main(){
    char str1[80];
    char str2[80];
    gets(str1);
    gets(str2);//获取字符串
    int fact=1;
    while(fact){
        for(int j=0;str1[j]!='\0';j++){
                if(str1[j]==str2[0]){
                    delete(str1,str2);//如果与子串的第一个字符相同,调用删除函数
                    fact=0;
                }
        }
        if(fact==0)
            puts(str1);
        else{
            for(int j=0;str1[j]!='\0';j++){
                if(str1[j]==str2[0]){
                    delete(str1,str2);//如果与子串的第一个字符相同,调用删除函数
                    fact=0;
                }
            }
        }
    }
    puts(str1);//输出操作后的子串
    return 0;
}

猜你喜欢

转载自blog.csdn.net/MyCodeQueen/article/details/41604539