Schválně jsem to napsal tak, že to budeš muset přepsat podle svého (a možná tam mám něco špatně), ale pro inspiraci to musí stačit.
int is_same(char *p, char *q)
{
while (*p != ' ' && *p != 0 &&
*q != ' ' && *q != 0 &&
*p == *q) {
p++;
q++;
}
return ((*p == ' ' || *p == 0) &&
(*q == ' ' || *q == 0));
}
int is_any_of(char *word, char *set)
{
while (*set)
{
while (*set == ' ')
set++;
if (is_same(word, set))
return 1;
while (*set != ' ' && *set != 0)
set++;
}
return 0;
}
int delete_missing(char *retezec, char *slova)
{
int deleted = 0;
char *src = retezec, *dst = retezec;
while (*src) {
while (*src == ' ')
src++;
if (!*src)
break;
if (is_any_of(src, slova)) {
if (dst != retezec)
*dst++ = ' ';
while (*src != ' ' && *src != 0)
*dst++ = *src++;
} else {
deleted++;
while (*src != ' ' && *src != 0)
src++;
}
}
*dst = 0;
return deleted;
}
int main()
{
char retezec[] = " tak se na to podivame jak to pofrci ";
char slova[] = "se to pofrci na";
int deleted = delete_missing(retezec, slova);
printf("smazano %d, vysledek %s\n", deleted, retezec);
return 0;
}