幾個常用的C查詢分割字串函式

2021-07-09 09:42:59 字數 1870 閱讀 1342

搜尋字串函式 strstr原型: extern char *strstr (char *__haystack, const char *__needle) 

所在標頭檔案:#include

功能:從字串haystack中尋找needle第一次出現的位置(不比較結束符null)。 

說明:返回指向第一次出現needle位置的指標,如果沒找到則返回null。

#include #include int main(void)

執行結果:junyu 

切割字串函式 strtok

原型:extern char *strtok (char *__restrict __s, const char *__restrict __delim) 

功能:分解字串為一組字串。s為要分解的字串,delim為分隔符字串。實質上的處理是,strtok在s中查詢包含在delim中的字元並用null(』/0′)來替換,直到找遍整個字串。 說明:首次呼叫時,s指向要分解的字串,之後再次呼叫要把s設成null。strtok在s中查詢包含在delim中的字元並用null(』/0′)來替換,直到找遍整個字串。 

返回值:從s開頭開始的乙個個被分割的串。當沒有被分割的串時則返回null。所有delim中包含的字元都會被濾掉,並將被濾掉的地方設為一處分割的節點。

#include #include int main(void)

return 0;

}

執行結果:1@2@3@4@5@6@ 

切割字串函式 strsep

原型:extern char *strsep (char **__restrict __stringp, const char *__restrict __delim) 

功能:分解字串為一組字串。從stringp指向的位置起向後掃瞄,遇到delim指向的字串中的字元後,將此字元替換為null,返回stringp指向的位址。它適用於分割「關鍵字」在兩個字串之間只「嚴格出現一次」的情況說明:和strsok不同的是,直接看結果

#include #include int main(void)

return 0;

}

執行結果:1@@2@@@@3@4@@@5@6@ 

總結

strstr用於判斷字串str2是否是str1的子串。如果是,則該函式返回str2在str1中首次出現的位址;否則,返回null 

strtok內部記錄上次呼叫字串的位置,所以不支援多執行緒,可重入版本為strtok_r,有興趣的可以研究一下。它適用於分割關鍵字在字串之間是「單獨」或是 「連續「在一起的情況。 

strsep返回值為分割後的開始字串,並將函式的第乙個引數指標指向分割後的剩餘字串。它適用於分割關鍵字在兩個字串之間只嚴格出現一次的情況。 不過據說linux核心裡面已經放棄了strtok而用的是strsep,等以後有需要了再研究

C 中字串分割的常用函式

經常碰到字串分割的問題,這裡總結下,也方便我以後使用。一 用strtok 函式進行字串分割 原型 char strtok char str,const char delim 功能 分解字串為一組字串。引數說明 str 為要分解的字串,delim 為分隔符字串。返回值 從s tr開頭開始的乙個個被分割...

c 字串分割函式

使用strtok函式分割。原型 char strtok char s,char delim strtok在s中查詢包含在delim中的字元並用null 0 來替換,直到找遍整個字串。功能 分解字串為一組字串。s為要分解的字串,delim為分隔符字串。說明 首次呼叫時,s指向要分解的字串,之後再次呼叫...

C 字串分割函式

平時刷 leetcode 劍指 offer 等可能不會用到,但在找工作做筆試題的過程中還是會經常用到的,c 標準庫裡面沒有字元分割函式split,這裡做個總結。方法1 利用 stl 實現 include include include using namespace std vector split...