C言語の標準関数を目的別に調べることができる辞典

ホーム > C 標準関数逆引き辞典 > 文字列 > 文字列を分割する

C 標準関数逆引き辞典

:: reverse dictionary ::

文字列

※ソースファイルについて


文字列を分割する

文字列を分割するには、strtok 関数を使います。

≪宣言≫

#include <string.h>

/* 定数 */
#define DELIMITER  "/ ,"  /* 区切り文字 */
char str[] = "Unix/Linux,Windows, Solaris";
char *token;
char *data[10];
int count = 0;

token = strtok(str, DELIMITER);
while (token != NULL)
{
  data[count] = token;
  token = strtok(NULL, DELIMITER);
  count++;
}

ソースファイル

data[0]"Unix"data[1]"Linux"data[2]"Windows"data[3]"Solaris" になります。


ワイド文字列の場合は wcstok 関数を使います。

≪宣言≫

#include <locale.h>
#include <string.h>

/* 定数 */
#define DELIMITER  L"/ ,、"  /* 区切り文字 */
wchar_t str[] = L"Unix/Linuxサーバ、Windows, Solaris";
wchar_t *token;
wchar_t *data[10];
int count = 0;

setlocale(LC_ALL, "ja");  /* ロケールを日本語に設定 */

token = wcstok(str, DELIMITER);
while (token != NULL)
{
  data[count] = token;
  token = wcstok(NULL, DELIMITER);
  count++;
}

ソースファイル

data[0]"Unix"data[1]"Linuxサーバ"data[2]"Windows"data[3]"Solaris" になります。

▼ 関数

int strtok(char *s, const char *sd)
int wcstok(wchar_t *s, const wchar_t *sd)

文字列 s を文字列 sd に含まれる区切り文字によって分割します。

分割は関数を呼ぶごとに一回ずつ行われます。
(文字列の先頭から順に行われます)

続けて分割する場合は、文字列 sNULL を指定します。

二回目以降の分割は、前回の区切り文字の次の文字から始まります。 分割する文字列がなくなると、NULL を返します。

なお、文字列 s 内の連続した区切り文字は、1つの区切り文字とみなされます。

●引数

s … 分割する文字列
sd … 複数の区切り文字を含む文字列(1文字でも可)

●戻り値

・分割する文字列がある … 文字列 s 内で分割した文字列へのポインタ
・分割する文字列がない … NULL

●補足

文字列 s 内の区切り文字は NULL文字に変換されます。 よって、分割後の文字列 s は一回目の分割文字列と同じになります。

注目キーワード ベスト5

  1. セキュリティ
  2. ホスティング
  3. レンタルサーバ
  4. ファイル復旧
  5. ハードディスク修復

文字列 - string -


ホーム > C 標準関数逆引き辞典 > 文字列 > 文字列を分割する

Copyright (C) 2005-2007 Noto Watabe. All rights reserved.
e-mail:wmh@always-pg.com