#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.