C語言strtok s函式

2022-05-19 00:54:09 字數 1962 閱讀 5407

strtok_s 在c語言中的作用是分割出乙個字串中的單詞

在msdn上參數列:

strtok_s

strtoken

string containing token or tokens.

strdelimit

set of delimiter characters.

context

used to store position information between calls to strtok_s

locale

locale to use.

4個引數的含義:

strtoken

這個引數用來存放需要分割的字元或者字串整體

strdelimit

這個引數用來存放分隔符(例如:,.!@#$%%^&*() \t \n之類可以區別單詞的符號)

context

這個引數用來存放被分割過的字串

locale

這個引數用來儲存使用的位址

//雖說有4個引數,但是我們可控引數只有3個locale是不可控的

remark:

與這個函式相近的函式:

wcstok_s 寬位元組版的strtok_s

_mbstok_s 多位元組版的strtok_s

接下來我們來看這個函式的執行過程:

在首次呼叫strtok_s這個功能時候會將開頭的分隔符跳過然後返回乙個指標指向strtoken中的第乙個單詞,在這個單詞後面茶插入乙個null表示斷開。多次呼叫可能會使這個函式出錯,context這個指標一直會跟蹤將會被讀取的字串。

跟蹤以下**中的引數來更好的理解這個函式:

#include

#include

char string =

".a string\tof ,,tokens\nand some  more tokens";

char seps = " .,\t\n";

char *token = null;

char *next_token = null;

int main(void)

}

printf("the rest token1:\n");

printf("%d", token);

}

環境:vs2013

採用f11逐步除錯:

當程式執行完17行的語句時值

token的值由a覆蓋null

next_token的值由a後其餘所有的字元覆蓋了null

因此token!=null

符合進入while語句的條件、

當程式進入whlie語句執行完24行時

token的值被覆蓋為string

next_token的值被覆蓋為string後的字串

經過幾次迴圈之後

token中的值變為null

next_token中的值為空被取時,會被函式去掉末尾的\0(由雙引號加上去的)//tips:給陣列賦值時,雙引號是初始化,初始化會在末尾加乙個\0所以給乙個陣列初始化時\0會佔乙個位元組,花括號是賦值不會佔乙個位元組

C語言 函式

1 實參和形參在數量上,型別上,順序上應嚴格一致,否則會發生 型別不匹配 錯誤。2 實參可以是常量,變數,表示式甚至是函式。但是在傳遞給函式前,必須有確定的值。3 形參變數只有在被呼叫時才分配記憶體單元,只有在函式內部有效,函式結束後不能再使用。4 實參和形參佔據不同的儲存單元。5 函式預設採用值傳...

c語言 函式

函式是實現某個功能的 段 函式之間的關係是並列的,不能巢狀 函式的定義 函式的返回值型別 函式名 引數的型別 引數名1.正常的函式有三部分 1.函式的宣告 2.函式的定義 3.函式的呼叫 如果函式在定義之前被呼叫的話,需要對函式提前進行宣告,當然在定義之後在呼叫如果沒有宣告也不會提示錯誤 函式的返回...

C語言函式

和變數 控制流 條件一樣 函式也是現代程式語言的基本組成部分。他可以使我們在應用中重複利用一塊 對於 的組織和維護是很有必要的。您將在ios和os x的框架中發現大量的例子。像其他的基礎元素一樣,object c的函式也是建立在c語言函式之上的。這章我們將介紹c語言最重要的方面,包括基本語法 宣告和...