C言語の strtok() 関数の使用方法
ストコトとは、C言語で文字列を複数のサブ文字列に分割する関数です。
関数のプロトタイプは次のとおりです。char *strtok(char *str, const char *delimiters);
文字列strをdelimitersで区切ります。区切り文字は1文字または複数の文字列です。
この関数は最初に分割対象の文字列を引数に渡して呼ぶと、最初のサブ文字列のポインタを返します。以降関数を実行すると、最初の引数にはNULLを渡し、関数は全てのサブ文字列を返し終えるまで、次のサブ文字列のポインタを引き続き返します。
分割したサブ文字列は’\0’文字で終端されるため、元の文字列中の区切り文字は’\0’に置き換わります。
以下に、strtok 関数の使用例を示します。
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello,world! How are you today?";
char delimiters[] = " ,!";
// 第一次调用时传入待分割的字符串
char *token = strtok(str, delimiters);
// 循环打印每个子字符串
while (token != NULL) {
printf("%s\n", token);
// 之后每次调用传入NULL
token = strtok(NULL, delimiters);
}
return 0;
}
実行結果は次のとおりです。
Hello
world
How
are
you
today
strtok 関数を使用すると、元の文字列が変更されます。 これは、区切り文字が ‘\0’ に置き換えられるためです。元の文字列を保持する必要がある場合は、 strtok 関数を呼び出す前にそのコピーを作成して操作を行います。