字串函式之Strtok 函式

2021-08-15 02:30:24 字數 1683 閱讀 4327

該函式包含在"string.h"標頭檔案中

char* strtok (char* str,constchar* delimiters );
切割字串,將str切分成乙個個子串

當s中的字元查詢到末尾時,返回null;

如果查不到delimiter所標示的字元,則返回當前strtok的字串的指標。

#include#includeint main(void)

return0;

}

"hello boy this is heima "

strtok在切割字串的時間,實際上就是將分割符的字元delimiter替換為』\0』並且返回首位址。

#include

#include

//根據函式原型實現strtok()函式

char

*mystrtok_origin

(char

* str_arr,constchar* delimiters,

char

**temp_str)

//2、跳過待分解字串

//掃瞄delimiters字元開始的所有分解符

str_arr +

=strspn

(str_arr, delimiters)

;//3、判斷當前待分解的位置是否為'\0',若是則返回null,否則繼續if(

*str_arr ==

'\0')/*

* 4、儲存當前的待分解串的指標b_temp,呼叫strpbrk()在b_temp中找分解符,

* 如果找不到,則將temp_str賦值為待分解字串末尾部'\0'的位置,

* b_temp沒有發生變化;若找到則將分解符所在位置賦值為'\0',

* b_temp相當於被截斷了,temp_str指向分解符的下一位置。

*/b_temp = str_arr;

str_arr =

strpbrk

(str_arr, delimiters);if

(str_arr ==

null

)else

//5、函式最後部分無論找沒找到分解符,都將b_temp返回。

return b_temp;

}//使用mystrtok來簡化mystrtok_origin函式

char

*mystrtok

(char

* str_arr,constchar* delimiters)

intmain

(void

)//2、使用mystrtok()函式

char

*str1 =

mystrtok

(buf,

"@")

;while

(str1)

return0;

}

拓展知識點:可重入與不可重入函式可重入函式:

指乙個可以被多個任務呼叫的函式(過程),任務在呼叫時不必擔心資料是否會出錯。

不可重入函式:

如果函式介面的**實現中在塊內定義和使用了static儲存型別的變數,這種函式將是不可重入函式。它在實時系統中是不安全函式

字串處理函式 strtok

字串分割函式是非常重要的乙個函式,就連如何使用也需要大家花上一段時間。所以這裡首先說一下strtok的處理方式 strtok會首先過濾掉所有的所有的屬於分割字串集合的字元,然後進行掃瞄並將之後碰到的屬於分割字串集合中的字元使用空結束符 0 來替代,這樣就可以直接使用該函式返回的直接讀取第乙個toke...

分割字串 strtok 函式

在這個競爭的社會,對手無處不在,相信好勝心或者自尊心每個人都有,別人想要時時刻刻處處都要超越你,面對競爭對手或許它會採取各種手段來對付你,不要不相信,這種無恥的人是有的,那麼對待它們首先要做到的一點就是忍,暴力是衝動的不明智的選擇,它只會使你滿足一瞬間的慾望,卻會給自己帶來無窮的傷害,甚至會毀掉自己...

字串分割函式strtok

分解字串為一組字串。s為要分解的字串,delim為分隔符字串。例如 strtok abc,def,ghi 最後可以分割成為abc def ghi.尤其在點分十進位制的ip中提取應用較多。strtok 用來將字串分割成乙個個片段。引數s指向欲分割的字串,引數delim則為分割字串中包含的所有字元。當s...