我想刪除字符串(小於或等於)的所有實例。即使重疊的子串也應該被完全刪除。 這是我所編寫的代碼:搜索並刪除字符串中的子字符串
#include<stdio.h>
int Checknremove(char *str,char *ph)
{
while(*str)
{
char *k=ph,*s=str;
while(*k && *k==*s) ++k,++s;
if(!*k)
{
while(*s) *str++=*s++;
*str=0;
return 1;
}
++str;
}
return 0;
}
int main()
{
int t;
scanf("%d", &t);
while(t--)
{
char str[100], ph[100];
scanf("%s %s", str, ph);
while(Checknremove(str,ph));
puts(str);
}
return 0;
}
問題是,它不僅能消除它們是不同的和不重疊的那些子串。 示例:catafjkgjcat cat 將輸出afjkgj,但aababbaababbac aababba將輸出ababbac,而不是c,因爲我想要它。我該怎麼辦?
而不是刪除子字符串,你可以記住它的位置,並不斷尋找和記憶其他事件。然後,當你發現所有的事件時,你可以擦除它們,注意重疊的字符。 –
'strstr()','memmove()',重複... – wildplasser