#include <stdio.h>
/*******************************************************************
*
* 函数名称: str_DestDel
* 函数功能: 删除一个字符串中与另一个字符串中的相同字母并且不区分大小写
* 函数参数:
* @strA 需要操作的字符串
* @strB 作为参考的字符串
* 返回结果:
* @strA 返回删除后的字符串地址
* 注意事项: None
* 函数作者: [email protected]
* 创建日期: 2024/05/06
* 修改历史:
* 函数版本: V1.0
* *****************************************************************/
char *str_DestDel(char *strA, char *strB)
{
// 记录字符串A的首地址 一轮比较结束后需回到最开始的位置
char *temp = strA;
// 记录字符串中字符不相同的位置 从首地址开始 比较结束后返回开始地址
char *p = strA;
// 使用字符串B中每一个元素和字符串A比较
while (*strB)
{
// 当字符串B中的元素不是字母时 跳出本轮循环
if ((*strB < 'A' || *strB > 'Z') && (*strB < 'a' || *strB > 'z'))
{
strB++;
continue;
}
// 遍历判断字符串A的字符与字符串B的字符是否相同 不区分大小写
while (*temp != '\0')
{
// 当字符串B的字母与字符串A的当前字母不同时 将当前地址下的字母赋值给p指针下的地址 后两个指针进行偏移
if ((*temp == *strB) || (*temp == *strB - 32) || (*temp == *strB + 32))
;
// 当相同时 仅将做比较用的指针偏移
else
{
*p = *temp;
p++;
}
temp++;
if (*temp == '\0')
{
*p = '\0';
}
}
temp = strA;
p = strA;
strB++;
}
return strA;
}
以下为测试代码及结果
int main()
{
char str1[] = "ABCDEFGHGFEDCBA";
char str2[] = "cE";
str_DestDel(str1, str2);
printf("%s\n", str1);
return 0;
}