strchr和strrchr 函式是 string.h 的標頭檔案中定義的 它們的函式原型是 :
char * strchr ( charconst *str, int
ch);
char *strrchr ( char
const *str, int ch);
strchr 功能是返回字元第一次出現在字串中的位置,strrchr 的功能是返回最後一次出現字串中的位置。如果不存在返回null指標。
strpbrk 這個函式是 string.h 的標頭檔案中定義的 它的函式原型是:
char *strpbrk( charconst *str, char
const *group );
函式的功能是返回乙個指向 str 中第乙個匹配 group 中任何乙個字元的字元位置,如果未找到返回乙個null指標。
例:
#include#includeintmain()
輸出:
ello world
strstr 這個函式是 string.h 的標頭檔案中定義的 它的函式原型是 :
char *strstr( charconst *s1,char
const *s2);
這個函式在s1中查詢整個s2第一次出現的位置,並返回乙個指向該位置的指標,如果s2沒有完全的出現在s1的任何位置就返回乙個null指標,如果s2是乙個空字串就返回s1。
strspn 和 strcspn 這兩個函式的原型是:
size_t strspn ( charconst *str, char
const *group );
size_t strcspn (
char
const *str, char
const * group );
strspn() 從引數 str 字串的開頭計算連續的字元,而這些字元都完全是 group所指字串中的字元。簡單的說,若 strspn() 返回的數值為n,則代表字串 str 開頭連續有 n 個字元都是屬於字串 group內的字元。
例:
#include#includeintmain()
strcspn 的功能正好和 strspn 相反:
#include#includeintmain()
strtok 這個函式是 string.h 的標頭檔案中定義的 它的函式原型是:
char * strtok(char *str, constchar *sep);
sep是分隔字串集合,str 中包含了零個或多個sep中的乙個或多個分隔標記,strtok 的功能就是找出 str 中的下乙個標記,並將其用nul結尾,返回指向這個標記的指標。需要注意的是 str 引數不是唯讀的,在函式中它將會被改變,所以如果傳入的引數是不可以改變的,那個就應該提前對這個字串進行複製,然後再傳入函式中。
例:
#include#includeintmain()
輸出:
abcabc123 def
123 def
那麼這樣就會出現乙個問題,因為加了乙個nul所以字串只後面的部分訪問不到了,我想這和你最初的想法肯定背道而馳了,那麼應該如何解決這個問題那?
請看下面一段**:
#include#includevoid print_tok(char *line,char const *sign)}int main()
輸出:
asdzxcqwe
為什麼會這樣,因為如果 strtok 的第乙個引數是null函式就在同乙個字串中從儲存的位置開始像前面一樣查詢下乙個標記,如果字串中不存在更多的標記,就返回乙個null指標。strtok 函式會儲存它的處理狀態的區域性資訊,所以在處理完乙個字串前不可以處理另乙個字串。
字串查詢
問題描述 對於乙個給定的 source 字串和乙個 target 字串,你應該在 source 字串中找出 target 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。解決思路 採用雙重for迴圈解決,思路清晰,較容易寫,但效率不高,另外一種方法是用kmp演算法,效率較高。需注意邊界條件,...
字串查詢
題目 對於乙個給定的 source 字串和乙個 target 字串,你應該在 source 字串中找出 target 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。思路 很簡單,看 就能懂 python處理字元真的優勢很大 主要是注意一些細節 class solution param so...
字串查詢
字串查詢演算法中,最著名的兩個是kmp演算法 knuth morris pratt 和bm演算法 boyer moore 兩個演算法在最壞情況下均具有線性的查詢時間。但是在實用上,kmp演算法並不比最簡單的c庫函式strstr 快多少,而bm演算法則往往比kmp演算法快上3 5倍。但是,最壞的情況下...