改了好久还是没有全过,等明天再看吧!好好休息,明天继续。
#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;
}
本文介绍了一种用于从主字符串中删除所有指定子串的C语言实现算法。该算法通过逐字符比较来寻找子串,并在找到匹配项时将后续字符前移以删除子串。代码还展示了如何重复此过程直至不再存在目标子串。

被折叠的 条评论
为什么被折叠?



