C言語 文字列を指定した区切り文字群で分解 - string.h - [ strtok ]

2008.11.18 Tuesday | by LRESULT


字列を指定した区切り文字群で分解するには、strtok()を使います。


strtok
書式 char* strtok( char *s1, const char *s2 )
機能 文字列を指定区切り文字群で分解
引数 char *s1 : 分解する文字列
const char *s2 : 区切り文字群
戻り値 区切られた文字列(トークン)があれば、先頭ポインタを返し、
区切られた文字列(トークン)が無ければNULLを返します。

1回目は、分解する文字列(s1)を指定し、トークンを取得します。
  2回目以降は、s1にNULLを指定し、トークンを取得します。
  NULLを返してきた場合に終了します。

分解する文字列がトークンに分解する際に
  区切り文字があった箇所は、「¥0」に置き換えられますので注意が必要です。





サンプルコード
文字列「this is a pen. Hello-World...」を対象に、
「 -.」(空白+ハイフン+ピリオド)を区切り文字群として分解してみます。
#include <stdio.h>
#include <string.h>

int main(void)
{
  char s1[] = "this is a pen. Hello-World...";
  char s2[] = " -."/* 空白+ハイフン+ピリオド */
  char *tok;

  tok = strtok( s1, s2 );
  while( tok != NULL ){
    printf( "%s¥n", tok );
    tok = strtok( NULL, s2 );  /* 2回目以降 */
  }

  return 0;
}



結果
this
is
a
pen
Hello
World
と、表示されます。

空白、ハイフン、ピリオドが区切り文字の為、それらは取得されません。
区切り文字は順不同で複数の文字を指定する事が出来ます。

カテゴリ:C言語 string.h | 23:30 | comments(0) | trackbacks(0) | -


コメントする











この記事のトラックバックURL

http://simd.jugem.jp/trackback/136

トラックバック