Вот обновление вашего кода, которое делает это:
У вас был какой-то код, чтобы поймать угловой случай, который доставлял ему много проблем. Я прокомментировал это, поскольку я не понимал цель. Посмотрите на это, если я пропустил, почему это важно. Я также исправил несколько ошибок индексации.
#include <stdio.h>
#include <string.h>
void removeWord(char *,char *);
int main()
{
char str[100] = {0}; //Initialize fully
char re[20] = {0};
printf("Enter any string: ");
gets(str);
printf("\nEnter word to remove: ");
gets(re);
printf("\nString before removing '%s' : %s",re,str);
removeWord(str,re);
printf("\nSrting after removing '%s' : %s",re,str);
return 0;
}
void removeWord(char *str,char *re)
{
int slen,rlen,found,j,k;
slen = strlen(str);
rlen = strlen(re);
for(int i=0; i<=slen-rlen; i++)
{
found = 1;
for(j=0; j<rlen; j++)
{
if(str[i+j] != re[j])
{
found = 0;
break;
}
}
if(found == 1)
{
for(k=i;k<rlen;k++)
{
str[k] = str[k + rlen];
}
str[k] = '\0';
}
}
}