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環境:vs2013#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);
}
採用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語言最重要的方面,包括基本語法 宣告和...