【C語言】字串函式strtok 按照指定字串分割
阿新 • • 發佈:2018-11-23
C語言字串函式 strtok()
函式原型
char *strtok(char *str,const char *delimiters);
引數
- str,待分割的字串
- delimiters,分隔符字串
- 該函式用來將字串str分割成一個個片段。 引數str指向欲分割的字串,引數delimiters則為分割字串中包含的所有字元。
用法
- 當strtok()在引數s的字串中發現引數delimiters中包涵的分割字元時,則會將該字元改為\0 字元。
- 在第一次呼叫時,strtok()必需給予引數s字串,往後的呼叫則將引數s設定成NULL。每次呼叫成功則返回指向被分割出片段的指標。
注意
需要注意的是,使用該函式進行字串分割時,會破壞被分解字串的完整,呼叫前和呼叫後的s已經不一樣了。第一次分割之後,原字串str是分割完成之後的第一個字串,剩餘的字串儲存在一個靜態變數中,因此多執行緒同時訪問該靜態變數時,則會出現錯誤。
#include <stdio.h>
#pragma warning(disable:4996)
#include <stdlib.h>
#include<string.h>
int main()
{
char str[] = "我,是,中國,程式設計師";
char *ptr;
printf ("開始前: str=%s\n", str);
printf("開始分割:\n");
ptr = strtok(str, ",");
while (ptr != NULL) {
printf("ptr=%s\n", ptr);
ptr = strtok(NULL, ",");
}
char s[]="aaa00bbb00ccc00ddd00";
ptr=strtok(s,"00");
while(ptr!=NULL){
printf("%s\n",ptr);
ptr=strtok(NULL,"00");
}
return 0;
}