#include
#include
#include
#include
#define MAX_WORD_LEN 20 // 单词最大长度
// 判断是否为空格字符
bool is_separator(char c) {
return c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '\0';
}
// 判断两个字符是否相同(忽略大小写)
bool is_same_char(char c1, char c2) {
return toupper(c1) == toupper(c2);
}
// 判断两个字符串是否相同(忽略大小写)
bool is_same_word(const char* s, const char* t) {
while (*s != '\0' && *t != '\0') {
if (!is_same_char(*s++, *t++)) {
return false;
}
}
return *s == '\0' && *t == '\0';
}
// 复制单词
void copy_word(char* dest, const char* src, int len) {
for (int i = 0; i < len; ++i) {
dest[i] = src[i];
}
dest[len] = '\0';
}
// 删除第一个字符串中与第二个字符串匹配的单词
// 返回新的字符串及删除的单词数量
char* filter_words(const char* str1, const char* str2, int* del_count) {
char* result = NULL;
int len = 0;
int max_len = 0;
int count = 0;
const char* p = str1;
const char* start = str1;
bool in_word = false;
while (*p != '\0') {
if (is_separator(*p)) { // 遇到空格字符
if (in_word) { // 如果在单词中
int word_len = p - start;
if (!is_same_word