:: 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 に含まれる区切り文字によって分割します。
分割は関数を呼ぶごとに一回ずつ行われます。
(文字列の先頭から順に行われます)
続けて分割する場合は、文字列 s に NULL を指定します。
二回目以降の分割は、前回の区切り文字の次の文字から始まります。 分割する文字列がなくなると、NULL を返します。
なお、文字列 s 内の連続した区切り文字は、1つの区切り文字とみなされます。
s … 分割する文字列
sd … 複数の区切り文字を含む文字列(1文字でも可)
・分割する文字列がある … 文字列 s 内で分割した文字列へのポインタ
・分割する文字列がない … NULL
文字列 s 内の区切り文字は NULL文字に変換されます。 よって、分割後の文字列 s は一回目の分割文字列と同じになります。
Copyright (C) 2005-2007 Noto Watabe. All rights reserved.
e-mail:wmh@always-pg.com