#include <stdio.h>
/********************************************************************* 函数名称: str_DestDel* 函数功能: 删除一个字符串中与另一个字符串中的相同字母并且不区分大小写* 函数参数:* @strA 需要操作的字符串* @strB 作为参考的字符串* 返回结果:* @strA 返回删除后的字符串地址* 注意事项: None* 函数作者: mailLinL@163.com* 创建日期: 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;
}