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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

C语言strtok()函数详解

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

函數原型

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

第一次調用strtok函數時,這個函數將忽略間距分隔符并返回指向在str字符串找到的第一個符號的指針,丟掉分隔符sep,添加NULL字符結尾(可以理解為用NULL替換了sep).

通過調用一系列的strtok函數,更多的符號將從str字符串中分離出來.每次調用strtok函數時,都將通過在找到的符號后插入一個NULL字符(丟掉sep)來修改str字符串.

為了讀取str中的下一個符號,調用strtok函數時str參數為NULL,這會引發strtok函數在已修改過的str字符串查找下一個符號.

strtok函數的常用方法

p = strtok(buf, ","); while( p!=NULL ){ p = strtok(NULL, ","); if( p==NULL ){ break; } }

例子分析

#include<string.h> #include <stdio.h>#define _CRT_SECURE_NO_DEPRECATE; #pragma warning(disable:4996); #define _CRT_SECURE_NO_WARNINGS; void print_tokens(char *line, char const *sep);int main() {char *s = "[123456,abced,bjhu88a,ffvjbjvy,jjbjg868bj,799nbgu]";char *start = NULL;char *end = NULL;char dest[100];char dest2[100];char *ss;start = strchr(s, (int)'['); // 找到字符'['的位置end = strchr(s, (int)']'); // 找到字符']'的位置memcpy(dest, start + 1, end - start);// 將字符串s中'['之后的所有內容都copy出來包括字符']',這是為了之后的分割字符串使用的dest[end - start - 1] = '\0'; // 將字符串dest的最后一個字符']'改成'\0',如果最后一個字符不是'\0'的話,那么在該字符串的最后一位是亂碼的memcpy(dest2, start + 1, end - start);// 將字符串s中'['之后的所有內容都copy出來包括字符']',這是為了之后的分割字符串使用的dest2[end - start - 1] = '\0';printf("%s\n", dest);ss = strtok(dest, ","); // 第一次調用strtok函數,第一個參數是將要分割的字符串,第二個參數是分割的字符','while (ss != NULL) {printf("%s\n", ss);ss = strtok(NULL, ","); // 再次調用strtok函數}print_tokens(dest2,",");getchar();return 0; }void print_tokens(char *line, char const *sep) {//static char whitespace[] = "\t\f\r\v\n";char *token;for (token = strtok(line, sep); token != NULL; token = strtok(NULL, sep)) {printf("Next token is %s\n", token);} }

這里寫了兩種函數的用法,其實沒什么區別。

結果

總結

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

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