/**
- @file name: main.c
- @brief 实现对字符串A进行处理,参照字符串B,只有字符串B中的字母在字符串A存在,则不分大小写,从字符串A中删除
- @author [email protected]
- @date 2024/06/26
- @version 1.0 :版本
- @property :属性介绍
- @note 补充 注意 说明
- CopyRight (c) 2023-2024 [email protected] All Right Reseverd
*/
实现对字符串A进行处理,参照字符串B,只有字符串B中的字母在字符串A存在,则不分大小写,从字符串A中删除
1:判断字符串B中的待处理字符,去除大小写字母以外的字符
2:通过第一次循环实现对字符串A的遍历。第二次嵌套循环找到字符串A中是否有与字符串B相同或同为大小写字符的元素。找到元素后将该位置后的元素覆盖到该位置上进行删除。
#include <stdio.h>
/**
* @function name: string
* @brief 实现对字符串A进行处理,参照字符串B,只有字符串B中的字母在字符串A存在,则不分大小写,从字符串A中删除
* @param @straA: @strB:
* @retval 函数返回类型说明
* @date 2024/05/6
* @version 1.0 :版本
* @note 补充 注意 说明
*/
char *string(char *strA, char *strB)
{
char *A = strA;
char *B = strB;
char *p = strA;
// 判断字符串B是否到达末尾
while (*B)
{
// 判断字符串B的当前字符是否属于字母(大写字母 or 小写字母)
if ((*B < 'A' || *B > 'Z') && (*B < 'a' || *B > 'z'))
{
// 如果字符串B的字符不是字母,则向后偏移
B++;
continue;
}
// 让字符串B中的每个字符都和字符串A中的所有字符进行比较
while (*A != '\0')
{
// 比较字符的ASCII码,注意:不分大小写
if ((*A == *B) || (*A == *B + 32) || (*A == *B - 32))
{
p = A;
while (*p != '\0')
{
*p = *(p + 1);
p++;
}
A--;
}
*A++;
}
A = strA;
*B++;
}
return strA;
}
int main(int argc,
char const *argv[])
{
char A[] = "heollo2 world456";
char B[] = "hl";
string(A, B);
printf("%s\n", A);
return 0;
}
函数验证结果: