C 庫函式 - strchr()解決L1-011 A-B
阿新 • • 發佈:2022-03-18
今天做到了一道字串相減的題,在字串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()也有相應的解法,也並不複雜,這裡不再進行贅述。