1. 程式人生 > >【C語言】字串函式strtok 按照指定字串分割

【C語言】字串函式strtok 按照指定字串分割

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; }

執行結果