找出倆個字串相同並刪除
今天遇到一個題目,就是有倆個字串,A和B,找出A中和B相同的字母,並刪除,只對字母進行操作,具體題目如下:
子函式實現
對於比較A和B字串並刪除A與B相同的字母,返回A的地址
-
/******************************************************************* * * name : StringDel * function : 找出A和B相同的字母並刪除,返回A * argument : @data 指定結點的資料域的資料 * retval : None * author : yq_dyx@163.com * 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;
}
已經經過測試驗證併成功,測試結果如程式碼的測試結果一致,如圖:
希望看完程式碼的你發現錯誤,請評論批評指正,非常感謝。並希望以上的程式碼能對同是初學者的你有所幫助,大家一起加油吧