C言語 文字列を指定した区切り文字群で分解 - string.h - [ strtok ]
2008.11.18 Tuesday | by LRESULT
文字列を指定した区切り文字群で分解するには、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 |
---|
と、表示されます。 空白、ハイフン、ピリオドが区切り文字の為、それらは取得されません。 区切り文字は順不同で複数の文字を指定する事が出来ます。 |