1. 程式人生 > >幾個常用的C查詢分割字串函式

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

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

所在標頭檔案:#include <string.h> 

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

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

#include <stdio.h>
#include <string.h>
int main(void)
{ 
    char haystack[] = "xiaojunyu";
    char needle[] = "jun";
    char *buf=strstr(haystack,needle);
    buf = strstr(haystack, needle);
    printf("%s",buf);
    return 0;
} 

執行結果: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 <stdio.h>
#include <string.h>
int main(void)
{
    char buf[] = "1,,2,,|,3-4,,,5|6";
    char *token;
    for (token = strtok(buf, ",-|"); token != NULL; token = strtok(NULL, ",-|")) {
        printf("%[email protected]", token);
    }
    return 0;
}

執行結果:[email protected]

@[email protected]@[email protected]

切割字串函式 strsep

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

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

#include <stdio.h>
#include <string.h>
int main(void)
{
    char buf[] = "1,,2,,|,3-4,,,5|6";
    char *buff = buf;
    char *token;
    for (token = strsep(&buff, ",-|"); token != NULL; token = strsep(&buff, ",-|")) {
        printf("%[email protected]", token);
    }
    return 0;
}

執行結果[email protected]@[email protected]@@@[email protected]@@@[email protected]

總結

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

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

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

相關推薦

常用C查詢分割字串函式

搜尋字串函式 strstr原型: extern char *strstr (char *__haystack, const char *__needle)  所在標頭檔案:#include <s

(轉載)C語言中常用標頭檔案及庫函式 (stdio.h ,string.h ,math.h ,stdlib.h)

不完全統計,C語言標準庫中的標頭檔案有15個之多,所以我主要介紹常用的這四個標頭檔案stdio.h ,string.h ,math.h ,stdlib.h ,以後用到其他的再做補充。下面上乾貨: 1.<stdio.h>:定義了輸入輸出函式、型別以及巨集,函式

C語言】字串函式strtok 按照指定字串分割

C語言字串函式 strtok() 函式原型 char *strtok(char *str,const char *delimiters); 引數 str,待分割的字串 delimiters,分隔符字串 該函式用來將字串str分割成一個個片段。 引數str指

sql常用函式

  Oracle:(百度百科查詢整理) 1,ROUND()函式為四捨五入函式    Round(number,[decimals]    number 待做四捨五入處理的數值    decimals 指明需保留小數點後面的位數

C中的常用演算法

/*一般查詢法*/{    int i;    if( size <= 0 )     return -1;    for( i = 0; i < size; ++i )     if( date == array[i] )      return i;    return -1;} void s

C#經常用到的字串的擷取、替換

C#幾個經常用到的字串的擷取  如將2013-08-08 替換成 20130808,程式碼寫法 string str = "2013-08-08",str = str.replace("-",""); string str="123abc456"; int i=3; 1

SQL Server 常用函式的使用

這幾個函式其實網上資料很多,但是為了方便自己的記憶,我還是決定還是寫一下,都說好記性不如爛筆頭,所以還是多寫一下。cast()函式作用主要是:把一種型別轉化成另外一種型別如把字串型別轉換成時間型別:SELECT CAST( '2011-10-2' AS datetime),再或者把數值型轉換成字串型別:SEL

c語言 記憶體查詢提取字串函式

查詢標頭 標尾 提取其中的資料。int GetidNumber(char * src, int src_size, char *dst){char flag1[10] = { 0x69, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x3a,0x

sql語句的常用函式總結

結構化查詢語言(Structured Query Language,簡稱SQL語句)從單個函式的使用上來看,較為簡單,但是當表與表巢狀、幾個函式組合使用,即可實現強大的資料查詢功能,能從資料庫中快速便捷地獲取需要的資訊。 本文總結了sql語句中常用的5個函式,

查詢域控的常用方法

1.net viewnet view /domain2.set logset log3.通過srv記錄nslookup -type=SRV _ldap._tcp.corp4.使用nltestnltest /dclist:corp5.使用dsqueryDsQuery Serv

c++ vector的常用方法

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">vector是一個類似陣列的容器,但可以刪減後自動改變長度。</s

XPATH的常用函式

1.contains (): //div[contains(@id,'in')] ,表示選擇id中包含有’in’的div節點 2.text():由於一個節點的文字值不屬於屬性,比如“<a clas

TensorFlow中用於評估模型在訓練集和測試集上的準確度的常用函式說明

1. tf.argmax() | tf.argmin() tf.argmax(input=tensor,dimention=axis) 找到給定的張量tensor中在指定軸axis上的最大值/最小值的位置。 a=tf.get_variable(nam

介紹程式中關於"路徑字串"的函式

程式中經常用到獲取路徑。 之前的部落格也講到過關於獲取路徑的一些操作。 獲取系統特殊目錄 比如使用SHGetFolderPath函式獲取windows系統的一些目錄: HRESULT SHGetFolderPath( HWND hwndOwner,

常用c++設計巨集定義

//singleton模板實現 template <typename T> struct Singleton {     static T& getInstance()     {         static T inst;         retur

PHP執行系統命令的有常用的函數

exe 自動 文件操作 nal 外部命令 中間 ring 打開 lcm PHP執行系統命令的有幾個常用的函數,如有:system函數、exec函數、popen函數,passthru,shell_exec函數他們都可以執行系統命令,不過前提時必須系統給了權限了哦。 syste

miniui常用知識點匯總

簡單 去除 spa 自帶 超過 表格 繪制 val wro 1.在表格中去除系統自帶的序列號,請看代碼: function allAndBrief(id) { if(id==1){ grid.set({

hadoop的常用命令

hadoop官方文檔:http://hadoop.apache.org/docs/r1.2.1/file_system_shell.html1、登錄主節點,切換到hdfs用戶[[email protected]/* */~]#su - hdfs2、列出當前目錄有哪些子目錄,有哪些文件[[email

封裝對象,包含常用方法

nts opp 操作 阻止事件冒泡 3.1 坐標 stop pre 處理 這兩天復習了DOM事件綁定,記錄一下,便於復習學習。 1 事件處理程序  1.1 HTML事件處理程序:直接寫在html中,和html不解耦,修改麻煩  1.2 DOM0級事件處理程序:不寫在html

Python:print()函數的常用參數

com file open 默認 strong 其他 end 空格 文件的 1.參數sep:設置輸出字符產之間的字符串。默認是空格 1 name=‘Tomwenxing‘ 2 age=‘23‘ 3 job=‘student‘ 4 print(name,age,job) 5