関数名:strtok
ヘッダー ファイル: <string.h>
関数プロトタイプ: char *strtok(char *str1, const char *str2);
機能: 指定された区切り文字を使用して文字列を分解します
パラメータ: char ※str1は分解する文字列です
const char *str2 は区切り文字列です
戻り値: 次に分割された文字列ポインタを返します。分割する方法がない場合は NULL を返します。
注: 1. この関数の機能は文字列を分解することです。いわゆる分解とは、新しい文字列は生成されませんが、指定されたコンテンツ内で最初に区切り文字が出現する位置で区切り文字が「/0」に変更されることを意味します。 to by sなので、初回は strtok() で最初の部分文字列を返します。
2. 最初の部分文字列の抽出が完了した後、ソース文字列 s の抽出を続けます。strtok の最初のパラメータは、空の値 NULL であることを示します。関数は、前の呼び出しで暗黙的に保存された位置から文字列を分解し続けます。このポインターは、最初の呼び出しの終了前に区切り文字の次のビットを指すために使用されます。
3. このポインタが「 」を指している場合、つまり分割部分文字列が存在しない場合には、NULL が返されます。
4. delim は区切り文字の集合として理解でき、delim 内の文字は区切り文字として使用できます。
5. strtok を呼び出したとき、開始位置が区切り文字の場合、開始位置から始まる区切り文字は無視されます。
6. この関数は str1 の値を変更するため、str1 は文字列ポインターではなく文字列配列でなければなりません。
プログラム例:入力された文字列配列をデリミタで区切って結果を出力する
#include<string.h>#include<stdio.h>intmain(void){charinput[50]=Ilikewww.dotcpp.comverymuch;char*p=strtok(input,);if(p){printf(%s n,p);}while(p=strtok(NULL,)){//最初のパラメータを NULL にして部分文字列を抽出します printf(%sn,p);}return0;}
実行結果:
好きですwww.dotcpp.comverymuch