strpbrk

strpbrkは、指定された文字列(文字配列)から、指定された文字の集合のいずれかを探す。

Man page of STRPBRK
C言語関数辞典 - strpbrk

元の文字列を破壊せずに、strtokのように、トークンを切り出す。

targetの先頭アドレスをポインタsに格納しておき、sからカンマ、改行、スペースのいずれかを探し、みつかったら、pに格納する。
pからsを引くと、距離dになるので、sから長さdの文字列をtokenにコピーする。sはp+1の位置に再設定し、これを繰り返す。
最後のトークンはpがNULLになってしまうので、最後の文字の次にあるNULL文字('\0')のアドレスをeとし、eからsを引いて距離dを出す。
あとは、同じようにsから長さdの文字列をtokenにコピーする。
最後に、targetが破壊されていないかを確認するため、targetを出力。

$ vi strpbrk.c
$ gcc strpbrk.c -o strpbrk
$ ./strpbrk
token = ABC
token = DEF
token = GHI
token = JKL
token = MNO
token = PQR
target = ABC,DEF,GHI
JKL MNO PQR
$

トークンはすべて切り出されているし、targetも破壊されていない。

Sample/c/strpbrk/strpbrk/src/strpbrk at master · bg1bgst333/Sample · GitHub