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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

strtok函数及其模拟

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

1.strtok函數的參數和返回值

參數:第一個參數指定一個字符串,它包含了0個或者多個由del字符串中一個或者多個分隔符分割的標 記。

第二個參數del參數是個字符串,定義了用作分隔符的字符集合。

返回值:

如果找到分割符號,則指向分隔符號開頭的指針。

否則為空指針。

當在正在掃描的字符串中到達字符串的末尾(即空字符)時,始終返回空指針。

2.VS庫函數中的實現

extern "C" char* __cdecl __acrt_strtok_s_novalidation(_Inout_opt_z_ char* string,_In_z_ char const* control,_Inout_ _Deref_prepost_opt_z_ char** context);extern "C" char* __cdecl strtok(char* const string, char const* const control) {return __acrt_strtok_s_novalidation(string, control, &__acrt_getptd()->_strtok_token); }

3.strtok函數的使用

我們常常通過循環的方式來進行多次切割而得到想要的片段

以下是切割不當的錯誤示范

#define _CRT_SECURE_NO_WARNINGS 1 #include<string.h> #include<stdio.h>int main() {char arr1[] = "awsas%bda&adbajb*jwdjbsas@ahdb.awwqd";char arr2[40];//char arr2[] = "awsas%bda&adbajb*jwdjbsas@ahdb.awwqd";strcpy(arr2, arr1);char del[] = "%&*@.";char* p = arr1;p = strtok(arr2, del);while (p!=NULL){p = strtok(NULL, del);printf("%s\n", p);}}

這是正確的寫法

#define _CRT_SECURE_NO_WARNINGS 1 #include<string.h> #include<stdio.h>int main() {char arr1[] = "awsas%bda&adbajb*jwdjbsas@ahdb.awwqd";char arr2[40];//char arr2[] = "awsas%bda&adbajb*jwdjbsas@ahdb.awwqd";strcpy(arr2, arr1);char del[] = "%&*@.";char* p = arr1;for(p = strtok(arr2, del);p!=NULL;p=strtok(NULL,del)){printf("%s\n", p);}}

4.strtok函數的模擬

在進行模擬之前我們先思考一個問題,,為什么每次函數被調用的時候,我們明明后續傳入的是一個空指針,但是為什么卻能夠找到上一次保存的地址,c語言中有什么地方提供了這樣的可能呢?沒錯,那就是靜態變量。

4.1使用庫函數

#include<stdio.h> #include<assert.h> #include<string.h> char* my_strtok(char* str1, const char* str2) {assert(str2);static int sz1 = NULL;static int count = NULL;static char* s1 = NULL;static char* s2 = NULL;int sz = 0;if (str1 != NULL){sz1 = strlen(str1);s2 = str1;sz = strlen(str2);for (*str1; *str1 != 0; str1++){ for (int i = 0; i < sz; i++){ if (i == 0){count++;}if (*str1 == *(str2 + i)){*str1 = 0;s1 = str1;//記錄這一次置0的位置。return s2;} }}}else{s2 = s1+1; str1 = s2;sz = strlen(str2);for (*str1; *str1 != 0; str1++){ for (int i = 0; i < sz; i++){ if (i == 0){count++;}if (*str1 == *(str2 + i)){*str1 = 0;s1 = str1;return s2;} }}if (count > sz1){return NULL;}return s2;}} int main() {char arr[20] = "adawa@wew%emm";char* p = "@%";char* str = NULL;for (str = my_strtok(arr, p); str != NULL; str = my_strtok(NULL, p)){printf("%s\n", str);}return 0; }

4.2或者不使用庫函數進行實現

#define _CRT_SECURE_NO_WARNINGS 1 #include<string.h> #include<stdio.h> char* my_strtok(char* des, char* del) {char *des2 = des;char *del2= del;static char* p1 = NULL;char* des3=NULL ;if (des != NULL){for (; *des2; des2++){del2 = del;for (; *del2; del2++){if (*del2 == *des2){*des2 = '\0';p1 = des2;p1++;return des;}}}}else{//des3 = p1;for (; *p1; p1++){del2 = del;for (; *del2; del2++){if (*del2 == *p1){*p1 = '\0';p1++;return des3;}}}}return NULL; } int main() {char arr1[] = "s&a%d&WAEA&HAHA";char arr2[40];//char arr2[] = "awsas%bda&adbajb*jwdjbsas@ahdbawwqd";strcpy(arr2, arr1);char del[] = "%&";char* p = arr1;//for(p = strtok(arr2, del);p!=NULL;p=strtok(NULL,del))//{// printf("%s\n", p);//}for(p = my_strtok(arr2, del);p!=NULL;p=my_strtok(NULL,del)){printf("%s\n", p);} }

總結

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

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

主站蜘蛛池模板: 国产成人观看 | 亚洲av成人一区二区 | 日本熟妇一区二区三区四区 | 性一交一乱一乱一视频 | 亚洲自拍偷拍图 | 综合久久久久综合 | 国产欧美激情视频 | 人人妻人人澡人人爽人人dvd | 日韩av男人的天堂 | 日本免费一级片 | 国产美女福利视频 | 波多野结衣在线免费观看视频 | 狂野少女电影在线观看国语版免费 | jizzjizz在线观看 | 中文字幕高清在线播放 | 国产亚洲欧美精品久久久www | 婷婷六月色 | 青青草小视频 | 日韩中文字幕视频在线观看 | 97xxx | 偷偷色噜狠狠狠狠的777米奇 | 中国一级大黄大黄大色毛片 | 91禁国产网站 | 黄a毛片| 解开人妻的裙子猛烈进入 | 欧美日本在线看 | 91麻豆精品一区二区三区 | 99视频一区 | 69热在线 | 免费高清成人 | av大片免费观看 | 精品视频久久久久久 | 中文无码熟妇人妻av在线 | 国产精品天天av精麻传媒 | 国产男人搡女人免费视频 | 男人把女人捅爽 | 欧美变态口味重另类 | 一区在线免费观看 | 51av视频| 91视频第一页| 国产综合一区二区 | 小镇姑娘高清播放视频 | 顶级嫩模啪啪呻吟不断好爽 | 国产做爰视频免费播放 | 日本黄色小说 | 国产明星换脸xxxx色视频 | 日韩爽片 | 黄色777| 男男gay动漫| 亚洲精品网址 | 欧美日韩在线不卡 | 91精品国产91久久久久 | 99爱爱视频 | 天堂网av手机版 | 色666 | 国产美女www爽爽爽 www.国产毛片 | 午夜剧场在线 | 久久国内免费视频 | 秋霞一区 | 桃色一区二区三区 | 视频网站在线观看18 | 中文字幕色站 | 一曲二曲三曲在线观看中文字幕动漫 | 性欧美video另类hd尤物 | 天堂a在线 | 视频国产在线 | 日韩高清在线播放 | 午夜精品一区二区三区在线观看 | 国产成人资源 | 中文av在线播放 | 国产精品久久一区二区三区动 | 久草一区二区 | 国产精品一区二区久久久 | 日韩一区二区三区电影 | 啪视频网站| 一个人看的www日本高清视频 | 中文字幕23 | 国产日产精品一区二区 | 亚洲激情免费视频 | 按摩害羞主妇中文字幕 | 西比尔在线观看完整视频高清 | 高清精品xnxxcom| 亚洲少妇第一页 | 免费黄视频网站 | 国产 日韩 欧美 在线 | 国产黄色大片免费看 | 日韩怡红院 | 四虎永久免费在线观看 | 国产精品久久久国产盗摄 | 免费三片在线观看网站v888 | 日本黄色片免费 | 91精品国产综合久久久蜜臀九色 | 高清国产在线观看 | 在线观看网址你懂的 | 欧美一级在线看 | 天天碰天天 | 在线观看色网站 | 欧美日韩一区二区三区在线播放 | 日韩黄色免费视频 |