找出俩个字符串相同并删除
今天遇到一个题目,就是有俩个字符串,A和B,找出A中和B相同的字母,并删除,只对字母进行操作,具体题目如下:
子函数实现
对于比较A和B字符串并删除A与B相同的字母,返回A的地址
-
/******************************************************************* * * name : StringDel * function : 找出A和B相同的字母并删除,返回A * argument : @data 指定结点的数据域的数据 * retval : None * author : [email protected] * date : 2024/05/06 * note : None * * *****************************************************************/ #include <stdio.h> #include <stdlib.h> char *StringDel(char *A,char *B) { char *p = A; //p备份A的首地址用于遍历比较 char *str = A; //str备份A的首地址用于存放结果 char *pp = B; //pp备份B的首地址用于遍历比较 while(*p != '\0') //用于遍历A { pp = B; //当p偏移一次pp回到B的首地址,重新从开始比较 if((*p < 'A' || *p > 'Z') && (*p < 'a' || *p > 'z')) //当p不是字母时,重新从开始比较 { p++; continue; } while(*pp) //用于遍历B { if(*p != *pp && *p != *pp+32 && *p != *pp-32) //当p和pp的大小写都不相等时,重新从开始比较 { pp++; continue; } else //当p和pp相等时,直接退出 { pp++; break; } } if(*pp == '\0' && *str != '\0' && *(pp-1) != *p && *p != *(pp-1)+32 && *p != *(pp-1)-32) //当pp遍历完时,p和pp不相等时,p存入结果,且与B最后的字母也不相等 { *str = *p; str++; } p++; } *str = '\0'; //给A的结尾加上终止符 return A; }
主函数测试
int main()
{
char A[] = "kDfjlFkwel";
char B[]= "lsdkjf";
StringDel(A,B);
printf("%s\n",A);
return 0;
}
已经经过测试验证并成功,测试结果如代码的测试结果一致,如图:
希望看完代码的你发现错误,请评论批评指正,非常感谢。并希望以上的代码能对同是初学者的你有所帮助,大家一起加油吧
标签:找出,遍历,str,++,pp,char,俩个,&&,字符串 From: https://www.cnblogs.com/xiaobaibudongjiuwen/p/18176223