strtok函数详解
在程序中為了傳輸數(shù)據(jù),有時候需要將一組數(shù)據(jù)通過某個分隔符分隔組成一個字符串來傳遞,比如下面的字符串:
*#10?-ssid=test&-passwd=12345678&-netmask=255.255.255.0&-gateway=192.168.1.1&上述字符串中:
*#10:用作校驗,表示一個數(shù)據(jù)串的開始;
-ssid=test:表示一個網(wǎng)絡(luò)的ssid;
-passwd=12345678:密碼;
-netmask=255.255.255.0:子網(wǎng)掩碼;
-gateway=192.168.1.1:網(wǎng)關(guān)。
其中校驗碼和其他的內(nèi)容通過“?”來分隔,其他內(nèi)容均是通過“&”來分隔。**strtok()**函數(shù)可以很方便的將該字符串中的每一個內(nèi)容解析出來,下面為strtok的函數(shù)原型:
char* strtok (char* str, const char* delimiters);str:待分隔的字符串;
delimiters:分隔字符串。
該函數(shù)用來將字符串分割成一個個片段。參數(shù)str指向欲分割的字符串,參數(shù)delimiters則為分割字符串中包含的所有字符。當strtok()在參數(shù)str的字符串中發(fā)現(xiàn)參數(shù)delimiters中包涵的分割字符時,則會將該字符改為\0 字符。在第一次調(diào)用時,strtok()必需給予參數(shù)str字符串,往后的調(diào)用則將參數(shù)str設(shè)置成NULL。每次調(diào)用成功則返回指向被分割出片段的指針。
需要注意的是,使用該函數(shù)進行字符串分割時,會破壞被分解字符串的完整,調(diào)用前和調(diào)用后的str已經(jīng)不一樣了。 第一次分割之后,原字符串str是分割完成之后的第一個字符串,剩余的字符串存儲在一個靜態(tài)變量中,因此多線程同時訪問該靜態(tài)變量時,則會出現(xiàn)錯誤。 下面給出示例代碼:
運行結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的strtok函数详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Spreadsheet Compar
- 下一篇: 福建专科计算机学校排名2015,2015