Удалить все слова из строки, в которых есть буквы из другой строки (1 слово)

#c #string #char

#c #строка #символ

Вопрос:

Моя программа удаляет только буквы. Но мне нужно удалить слова в «str2», которые состоят из букв из «str1». Как мне это сделать? пожалуйста, напишите код, который моя программа:

 char str1[size], str2[size], newstr[size];
int i = 0, j = 0, k = 0;


printf("Enter the test word:n");
gets(str1);

printf("Enter the string:n");
gets(str2);

for (i = 0; str1[i] != ''; i  )
{
    for (j = 0; str2[j] != ''; j  )
    {
        if (str1[i] == str2[j])
        {
            continue;
        }
        else
        {
            
            newstr[k] = str2[j];
            k  ;
        }
    }
    newstr[k] = '';
    strcpy(str2, newstr);
    k = 0;
    
}
    printf("New string: %sn", newstr);
            
return 0;
}
 

Я думаю, что strtok, strpbrk могут помочь, но, к сожалению, я не понимаю, как это использовать.
Я пытался использовать strok только для разбиения строки на части.

Комментарии:

1. Когда вы говорите words in "str2" that consists letters from "str1" , вы имеете в виду words in "str2" that consist COMPLETELY of letters from "str1" или words in "str2" that contain ANY letters from "str1"

2. Если вы пытаетесь что-то делать со словами, вам нужно перебирать пробелы и знаки препинания. Вы могли бы использовать strtok() с пробелом в качестве разделителя, но тогда вам нужно вернуться и заменить вставленный пробелами. strcspn() и strpbrk() предназначены для поиска нескольких вещей, чтобы вы могли использовать then для поиска пробелов и знаков препинания, но вам все равно понадобится цикл, поэтому вы могли бы просто использовать цикл с оператором if.