strtokは、指定された文字列(文字配列)を、指定された区切り文字の集合のいずれかで区切って、文字列を切り出す。
Man page of STRTOK
C言語関数辞典 - C言語Tips集 文字列を指定文字で分割する
気を付けなければいけないのは、渡した文字列に指定された区切り文字がみつかったら、そこに'\0'を代入することで区切っているというstrtokの手法。
つまり、渡した文字列が破壊されてもいい場合に、これを使ってもよいということである。なので、第1引数は、const char *ではなく、char *になっている。
元の文字列が壊されては困る場合、別の方法で取り出す必要がある。
カンマと改行とスペースのどれかが含まれていたら、区切るようになっている。
strtokの特徴として、最初は対象となる文字列、2回目以降はNULLを渡すという仕様になっている。
戻り値にtokenが返ってくるので、それを出力している。
$ vi strtok.c $ gcc strtok.c -o strtok $ ./strtok token = ABC token = DEF token = GHI token = JKL token = MNO token = PQR $
1行目はカンマ、2行目はスペース、もちろん改行もしているわけだが、平等に切り出されている。
Sample/c/strtok/strtok/src/strtok at master · bg1bgst333/Sample · GitHub