Удаление слов в массиве символов (С)

Есть код, который должен удалять слова из строки. Проблема в том что если например вводить строку: pop this word pop pop pop pop, он должен оставить только: this word, но он не удаляет последнее слово и оставляет его и получается: this word pop. Если в конце добавлять пробел то будут удаляться все слова. Использовать другие функции нельзя.

Вот сам код:

#include <stdio.h> 
 
int len(char *word) 
{ 
 int len = 0; 
 while (word[len] != '\n') len++; 
 return len; 
} 
 
void remove_w(char *line, char *word) 
{ 
 int item = 1; 
 for (int i = 0; line[i] != '\n'; i++) 
 { 
  if (line[i] != ' ') 
  { 
   if (line[i] == word[item]) item++; 
   if ((line[i+1] == '\n' || line[i+1] == 0) && len(word) == item) line[len(line) - item - 1] = 0; 
  } 
  else 
  { 
   if (len(word) == item) 
   { 
    int s = 0; 
    while (s < item + 1) 
    { 
     for (int k = i - item; k < len(line) - 1; k++) 
     { 
      char tmp = line[k]; 
      line[k] = line[k+1]; 
      line[k+1] = tmp; 
     } 
     s++; 
    } 
    line[len(line) - item - 1] = 0; 
    if (item != 0) i -= (item + 1); 
   } 
   item = 0; 
  } 
 } 
} 
 
int main() 
{ 
 char line[10000]; 
 char word[100]; 
 fgets(line, 10000, stdin); 
 fgets(word, 100, stdin); 
 remove_w(line, word); 
 printf("%s", line); 
}

Ответы (0 шт):