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