C语言strtok()函数详解
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                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()函数详解的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Tomcat 警告之“资源添加到Web应
- 下一篇: 你所在专业的特色是什么计算机,专业特色是
