删除字符串中与另一个字符串中的相同字母的自定义函数

#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;
}

image

posted @ 2024-05-06 20:28  林大官人995  阅读(19)  评论(0)    收藏  举报