只会搞删除一个字符的,多个的就不行了,如何改?

#include<stdio.h>
void input_string(char str[80])
{
gets(str); //读一个字符串
}
void delete_string(char str[],char st)
{
int i=0,j=0;
for( ;str[i]!='\O';i++)
if(str[i]!=st) str[j++]=str[i];
str[i]='\0';
}
void show_string(char str[])
{
printf("%s\n",str);
}

int main()
{
char str[80],st;
input_string(str);
printf("输入要删除字符:");
scanf("%c",&st);
delete_string(str,st);
show_string(str);
return 0;
}

img

img


#include<stdio.h>
#include<string.h>


void squeeze(char s1[], char s2[])
{
    int i, j, k;
    for(i = k =0; s1[i] != '\0'; i++)
    {
        for(j = 0; s2[j] != '\0' && s2[j] != s1[i]; j++)
            ;
        if(s2[j] == '\0')
            s1[k++] = s1[i];
    }
    s1[k] = '\0';
}
int main()
{
    char s1[80] ;
    char s2[80] ;
    scanf("%s",s1);
    scanf("%s",s2);
    squeeze(s1,s2);
    printf("%s", s1);
    return 0;
}

img

代码如下:

#include<stdio.h>

//删除str1中在str2中出现的字符
void squeeze(char* str1,char* str2)
{
    int i=0,j=0,k=0;
    while(str1[i])
    {
        for(j=0;str2[j]!='\0';j++)
        {
            if(str1[i] == str2[j])
                break;
        }
        if(str2[j] == '\0')
            str1[k++] = str1[i];
        i++;
    }
    str1[k] = 0;
}
int main()
{
    char s1[20]="THISISABOOK";
    char s2[5]="IS";
    squeeze(s1,s2);
    printf("s1=%s\n",s1);
    return 0;
}


#include<stdio.h>
void input_string(char str[80])
{
  gets(str); //读一个字符串
}
void delete_char(char str[], char st)
{
int i=0,j=0;
for( ;str[i]!='\O';i++)
if(str[i]!=st) str[j++]=str[i];
str[j]='\0';
}
void delete_string(char str[],char st[])
{
int i=0,j=0;
for( ;st[i]!='\O';i++)
delete_char(str, st[i]);
}
void show_string(char str[])
{
printf("%s\n",str);
}

int main()
{
char str[80],st[80];
input_string(str);
printf("输入要删除字符串:");
input_string(st);
delete_string(str,st);
show_string(str);
return 0;
}