删除A中与B相同的元素
程序
#include <stdio.h>
/*******************************************************************
*
* file name: 删除A中与B相同的元素
* author : 17647576169@163.com
* date : 2024-5-6
* function : 对字符串A进行处理,参照字符串B,只有字符串B中的字母在字符串A存在,则不分大小写,从字符串A中删除
* note : None
*
* CopyRight (c) 2024 17647576169@163.com All Right Reseverd
*
* *****************************************************************/
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))
;
else
{
*p = *A;
p++;
}
A++;
if (*A == '\0')
{
*p = '\0';
}
}
// 初始化P和A的位置
A = strA;
p = strA;
B++;
}
return strA;
}
验证
int main(int argc,
char const *argv[])
{
char A[] = "hHHeooHolloooo23ooo,world456";
char B[] = "l111H";
string(A, B);
printf("%s\n", A);
return 0;
}
输出结果
eooooooo23ooo,word456