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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

strtok()函数

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

strtok()

將字符串拆分成tokens,tokens是被分隔符中的任何字符分隔的連續字符序列

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

  • sep參數是個字符串,定義了用作分隔符的字符集合
  • 第一個參數指定一個字符串,它包含了0個或者多個由sep字符串中一個或者多個分隔符分割的標記。
  • strtok函數的第一個參數不為 NULL ,函數將找到str中第一個標記,strtok函數將保存其在字符串中的位置。
  • 如果字符串中不存在更多的標記,則返回 NULL 指針。

工作原理:

strtok函數找到str中的下一個標記,并將其用 \0 結尾,返回一個指向這個標記的指針。

(注: strtok函數會改變被操作的字符串(置\0操作),所以在使用strtok函數切分的字符串一般都是臨時拷貝的內容 并且可修改。)

如下一段代碼

char arr[] = "Atsuki@yeah.net"; const char* sep = "@."; strtok(arr,sep);//從字符串頭開始找第一個標記 strtok(NULL,sep);//從保存好的位置開始繼續往后找 strtok(NULL,sep);//從保存好的位置開始繼續往后找

strtok會從arr的A開始找一直到分隔符@,找到后就會將@置為\0,并記住這個位置,然后返回Atsuki字段的首地址,即A的地址。

strtok(arr,sep);執行后字符串就變為了

char arr[] = "Atsuki\0yeah.net";

然后strtok(NULL,sep);就會返回y的地址,并把.置為\0

下一個strtok(NULL,sep);會返回n的地址

如果再調用strtok(NULL,sep);就返回空指針

但是

一般我們會用將strtok作用在待切分字符串的臨時拷貝上,因為它會改變原字符串,并且我們把上面的代碼改進一下就是這樣的

int main() {char arr[] = "Atsuki@yeah.net";const char* sep = "@.";char buff[30] = {0};strcpy(buff,arr);char* str = NULL;for(str=strtok(buff,sep); str!=NULL; str=strtok(NULL,sep)){printf("%s\n", str);}return 0; }

總結

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

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