日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

strtok函数详解

發布時間:2023/12/20 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 strtok函数详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在程序中為了傳輸數據,有時候需要將一組數據通過某個分隔符分隔組成一個字符串來傳遞,比如下面的字符串:

*#10?-ssid=test&-passwd=12345678&-netmask=255.255.255.0&-gateway=192.168.1.1&

上述字符串中:
*#10:用作校驗,表示一個數據串的開始;
-ssid=test:表示一個網絡的ssid;
-passwd=12345678:密碼;
-netmask=255.255.255.0:子網掩碼;
-gateway=192.168.1.1:網關。

其中校驗碼和其他的內容通過“?”來分隔,其他內容均是通過“&”來分隔。**strtok()**函數可以很方便的將該字符串中的每一個內容解析出來,下面為strtok的函數原型:

char* strtok (char* str, const char* delimiters);

str:待分隔的字符串;
delimiters:分隔字符串。

該函數用來將字符串分割成一個個片段。參數str指向欲分割的字符串,參數delimiters則為分割字符串中包含的所有字符。當strtok()在參數str的字符串中發現參數delimiters中包涵的分割字符時,則會將該字符改為\0 字符。在第一次調用時,strtok()必需給予參數str字符串,往后的調用則將參數str設置成NULL。每次調用成功則返回指向被分割出片段的指針。
  需要注意的是,使用該函數進行字符串分割時,會破壞被分解字符串的完整,調用前和調用后的str已經不一樣了。 第一次分割之后,原字符串str是分割完成之后的第一個字符串,剩余的字符串存儲在一個靜態變量中,因此多線程同時訪問該靜態變量時,則會出現錯誤。 下面給出示例代碼:

#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char str[]="*#10?-ssid=test&-passwd=12345678&-netmask=255.255.255.0&-gateway=192.168.1.1&"; char *ptr; printf("before strtok: str=%s\n",str); printf("begin:\n"); ptr = strtok(str, "?&"); while (ptr != NULL) { printf("str: %s\n",str); printf("ptr: %s\n",ptr); ptr = strtok(NULL, "&"); } return 0; }

運行結果:

總結

以上是生活随笔為你收集整理的strtok函数详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。