Поиск слова и перезапись его частью, которую вы хотите сохранить:
char *found;
while((found=strstr(sntc,word))!=NULL)
strcpy(found,found+strlen(word));
Конечно, вы можете сохранить strlen(word)
в переменной.
Тест: https://ideone.com/BpLRe3
Если вас беспокоит конец Вселенной, используйте memmove
(а также используйте fgets
, это применимо, даже если вы не беспокоитесь).Оба они требуют небольшой работы, так как fgets
также хранит разрыв строки, который должен быть удален (в противном случае strstr
будет искать что-то вроде word\n
, предположительно напрасно), в то время как memmove
перемещает память,поэтому размер должен быть указан явно, и он должен включать нулевой терминатор:
char sntc[150];
char word[30];
char *found;
size_t wordlen;
fgets(sntc,sizeof(sntc),stdin);
fgets(word,sizeof(word),stdin);
wordlen=strlen(word)-1;
word[wordlen]=0;
while((found=strstr(sntc,word))!=NULL)
memmove(found,found+wordlen,strlen(found+wordlen)+1);
printf("%s",sntc);
Пробел все еще применяется в тесте: https://ideone.com/hvZAtm (я поставил "_dunyali
"во вторую строку ввода, только с пробелом - здесь форматировщик, очевидно, съел это место, поэтому теперь он помечен подчеркиванием), но в реальной жизни вам придется позаботиться о пробелах (одна из которых обычно может быть удалена) и знаки препинания (которые могут понадобиться или не понадобиться впоследствии) вокруг слова.