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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

strtok_r 和 strsep 使用实例

發布時間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 strtok_r 和 strsep 使用实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這兩個函數都是拆分字符的API,都是線性安全函數,特意寫了個實例對比兩個函數的不通,從MAN手冊中可以看出兩個函數都會改變原有字符串。

strsep() function was introduced as a replacement for strtok(3), since the latter cannot handle empty fields. However, strtok(3) conforms to?C89/C99 and hence is more portable.

也就是說strsep是strtok的替代接口,但可能在移植的時候會出現問題。

#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char ptr[]={ "abc;defghijk; lmnopqrst ;uvwxyz "}; char *p = ptr, *str= "; "; int i = 0;char *sep = NULL;printf("Original string : %s\n", ptr);while((sep = strsep(&p, str)) != NULL){if(!strcmp(sep, "")){printf("more than %s appear \n", sep);continue;}printf("Line %d: %s\n", ++i, sep); }return 0; } 輸出結果:

TestServer $ ./strsep?
Original string : abc;defghijk; ? ? lmnopqrst ;uvwxyz?
Line 1: abc
Line 2: defghijk
more than ?appear?
more than ?appear?
more than ?appear?
more than ?appear?
more than ?appear?
Line 3: lmnopqrst
more than ?appear?
Line 4: uvwxyz
more than ?appear?

會多次出現空字符串的問題,這是因為strsep在處理多余一個的delimit字符是會返回空字符串代替NULL。

#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char ptr[]={ "abc;defghijk; lmnopqrst ;uvwxyz "}; char *p = ptr, *dlm= "; "; int i = 0;char *sep = NULL, *saveptr = NULL;printf("Original string : %s\n", ptr);while((sep = strtok_r(p, dlm, &saveptr)) != NULL){printf("Line %d: %s\n", ++i, sep); // note: p have to set NULL, or will not break while();p = NULL;}return 0; }

輸出結果:TestServer$ ./strtok_r Original string : abc;defghijk; lmnopqrst ;uvwxyz?

Line?1: abc

Line?2: defghijk

Line?3: lmnopqrst

Line?4: uvwxyzstrtok?

函數會將多余一個delimit字符轉換成'\0', 注意p = NULL操作,在第二次調用strtok&strtok_r時需要將str=NULL。

總結

以上是生活随笔為你收集整理的strtok_r 和 strsep 使用实例的全部內容,希望文章能夠幫你解決所遇到的問題。

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