1. 程式人生 > 其它 >C 庫函式 - strchr()解決L1-011 A-B

C 庫函式 - strchr()解決L1-011 A-B

今天做到了一道字串相減的題,在字串A中把字串B所包含的字元全部刪掉,題目難度不大,但瞭解到了關於strchr()這一函式的用法。

strchr()的原型為:

char* strchr(const char* str, int c);

其中str表示要被搜尋的字串,c表示要搜尋的字元。

這裡的字串要定義為 char 陣列型別,而不能定義為string 型別的字串。

該函式返回在字串 str 中第一次出現字元 c 的位置,如果未找到該字元則返回 NULL。

再結合題目來說,求字串A-B。

知道了strchr()的用法,那整體思路就很簡單,顯示宣告兩個char型別的陣列,然後分別輸入兩個字串,再利用迴圈遍歷字串A,在迴圈中判斷字串A的每一個字元是否在字串B中檢索到,如果檢索到就進行下一次迴圈,否則就輸出當前A的字元。

程式碼如下:

char s1[10002];
       char s2[10002];
 
  cin.getline(s1,10002);
   cin.getline(s2,10002);
   
    for(int i=0;i<strlen(s1);i++)
    {
        if(strchr(s2,s1[i]))//檢索到就不輸出,結果等價於刪除
            continue;
        else
            cout<<s1[i];
    }

這道題不採用strchr()也有相應的解法,也並不複雜,這裡不再進行贅述。