前言 :
在這裡我們要設計一個 API, 透過傳入字串與我們欲搜尋的字元, 再傳入的字串進行搜尋, 最後將搜尋到的字元在該字串的位置回傳. 若不存在則回傳 NULL.
另外提供另一個參數讓使用者決定是搜尋到第一個符合的結果就回傳, 還是搜尋完整個字串在以最後一個Match 的結果回傳. 在這裡我們透過定義一個列舉如下來客製搜尋結果 :
函式API 定義如下 :
語法 :
char *TD_SearchChar(char *cString, char c, TD_SEARCH_TYPE eType);
輸入參數 :
輸出結果 :
範例代碼 :
輸出結果 :
補充說明 :
* C++ : Reference : C Library : cstring (string.h) : strlen
在這裡我們要設計一個 API, 透過傳入字串與我們欲搜尋的字元, 再傳入的字串進行搜尋, 最後將搜尋到的字元在該字串的位置回傳. 若不存在則回傳 NULL.
另外提供另一個參數讓使用者決定是搜尋到第一個符合的結果就回傳, 還是搜尋完整個字串在以最後一個Match 的結果回傳. 在這裡我們透過定義一個列舉如下來客製搜尋結果 :
- enum TD_SEARCH_TYPE{
- TD_SEARCH_FWD, // 搜尋到第一個符合結果即回傳
- TD_SEARCH_BACK // 搜尋完整個字串, 以最後一個符合結果回傳
- };
語法 :
char *TD_SearchChar(char *cString, char c, TD_SEARCH_TYPE eType);
輸入參數 :
輸出結果 :
範例代碼 :
- #include
- #include
- #include
- //#define TD_SEARCH_FWD 1
- //#define TD_SEARCH_BACK 2
- enum TD_SEARCH_TYPE{
- TD_SEARCH_FWD,
- TD_SEARCH_BACK
- };
- char *TD_SearchChar(char *cString, char c, TD_SEARCH_TYPE eType) {
- int iCharPos=0;
- int iStrLen = strlen(cString);
- char *cszBackFoundPos = NULL;
- switch(eType) {
- case TD_SEARCH_FWD:
- while(iCharPos < iStrLen) {
- if(cString[iCharPos] == c) return (cString+iCharPos);
- iCharPos++;
- }
- break;
- case TD_SEARCH_BACK:
- while(iCharPos < iStrLen) {
- if(cString[iCharPos] == c) cszBackFoundPos = (cString+iCharPos);
- iCharPos++;
- }
- if(cszBackFoundPos!=NULL) return cszBackFoundPos;
- break;
- default:
- break;
- }
- return NULL;
- }
- void main() {
- char *line = "Hello, John. Long time no see. How about Johnny?";
- char *fwd_search = TD_SearchChar(line, 'J', TD_SEARCH_FWD);
- char *bk_search = TD_SearchChar(line, 'J', TD_SEARCH_BACK);
- printf("Frond Search: %s\n", fwd_search);
- printf("Back Search: %s\n", bk_search);
- }
補充說明 :
* C++ : Reference : C Library : cstring (string.h) : strlen
This message was edited 3 times. Last update was at 05/08/2010 09:23:48
沒有留言:
張貼留言