乙個分解字串函式strtok 實現(不使用)

2021-06-28 07:09:28 字數 2336 閱讀 8880

分解字串,將關鍵字元替換為字串終止符』\0』.當該函式在s中字串發現delim 中包含的字元時,會將該字元改為』\0』。

第一次呼叫時

s必須為所求字串。之後則將

s設定成

null

,該函式能夠自動識別並且從上一次擷取的字串之後開始繼續替換擷取功能。每次呼叫成功則返回指向被分割出片段的指標。

//

// strtok.c

//// created by lancer on 15-1-13.

// modified by lancer on 15-1-14.

// 主要修改:

// 1. 將 _ifnull 這個全域性指標改為在 mystrtok函式中作用的靜態指標,更符合模組化程式設計要求

// 2. 將乙個 if-else 語句改為三目判斷語句,簡化程式

// 3. 規範化所有的注釋

// 4. 初始化各個引數

//#include #define maxsize 50 //輸入串最大長度

//#undef strfirstnot

//#undef strfirstin

char *mystrtok (char *s, const char *delim);

int strfisrtnot(const char *s, const char *delim); //用於返回 s 字串中第乙個不在 delim 中字元的下標

char *strfirstin(const char *s1,const char *s2);// s1 第一次出現 s2 中含有的字元時,返回該字元位置。

//char *_ifnull; //乙個全域性指標

int main()

//處理串二,並逐個輸出token

printf ("\nthe 2nd string you input is %s and your match string is [ %s ]\n", myinputno2, suit2);

printf("the 2nd result is: \n");

s2 = mystrtok (myinputno2, suit2);

while (s2 != null)

return 0;

}/**

*函式描述:分解字串,將關鍵字元替換為字串終止符』\0』.當該函式在 s 中字串發現 delim 中包含的字元時,會將該字元改為』\0』.

第一次呼叫時 s 必須為所求字串。之後則將 s 設定成null,該函式能夠自動識別並且從上一次擷取的字串之後開始繼續替換擷取功能。每次呼叫成功則返回指向被分割出片段的指標。

* *@param s:待分解的字串

*@param delim:分隔符字串。

*@return: 返回每個token的頭指標

*/char *mystrtok(char *s, const char *delim)

sbegin += strfisrtnot(sbegin, delim); //將sbegin指向第乙個非匹配域的字元位置

if (*sbegin == '\0') //若第乙個非匹配域字元為字串終止,則將全域性指標設為空,並返回空

send = strfirstin (sbegin, delim);//找到該串中第乙個屬於delim中字元的位置

if (send && *send != '\0')

_ifnull = send; //將指標指向下乙個串的第乙個位置

return (sbegin);

}/**

*函式描述:找出 s 字串中第乙個不在 delim 中字元的下標,並返回

* *@param s:待分解的字串

*@param delim:分隔符字串。

*@return: 返回第乙個不在delim中字元的下標。為整型。

*/int strfisrtnot(const char *s, const char *delim)

}

if (*pd == '\0')

++count;

}

return count;

}/**

*函式描述:掃瞄 s1,當遇到第乙個 s2 中的字元時,返回該字元的位置

* *@param s1:字串一,用於查詢

*@param s2:字串二,用於匹配

*@return: 返回s1中出現第乙個s2中字元時字元的指標。

*/char *strfirstin(const char *s1,const char *s2)

} }return (null);

}

STL中分解字串函式strtok

char strtok char s,const char delim 分解字串為一組字串。s為要分解的字串,delim為分隔符字串。strtok 用來將字串分割成乙個個片段。引數s指向欲分割的字串,引數delim則為分割字串,當strtok 在引數s的字串中發現到引數delim的分割字元時則會將該...

分解字串

按要求分解字串,輸入兩個數m,n m代表輸入的m串字串,n代表輸出的每串字串的位數,不夠補0。例如 輸入2,8,abc 123456789 則輸出為 abc00000 12345678 90000000 分析思路 1.獲得字串的長度length後,判斷與 要輸出位數n 的大小,大於n的話,直接 pr...

strtok s分解字串

char strtok s char str,要分解的字串 const char delimiters,分隔符 char context 後續待分解字串 wcstok s是strtok s的寬字元版本 wchar t wcstok s wchar t str,const wchar t delimi...