:: reverse dictionary ::
※ソースファイルについて
文字列から文字や数値を取り出すには、sscanf 関数を使います。
#include <stdio.h>
char data[] = "プログラム 123 C 4.56"; char str[32]; int num; char ch; float flt; sscanf(data, "%s %d %c %f", str, &num, &ch, &flt);
str は "プログラム" 、num は 123 、ch は 'C' 、flt は 4.56 になります。
ワイド文字列の場合は swscanf 関数を使います。
#include <locale.h> #include <stdio.h>
wchar_t data[] = L"プログラム 123 C 4.56"; wchar_t str[32]; int num; wchar_t ch; float flt; setlocale(LC_ALL, "ja"); /* ロケールを日本語に設定 */ swscanf(data, L"%s %d %c %f", str, &num, &ch, &flt);
str は "プログラム" 、num は 123 、ch は 'C' 、flt は 4.56 になります。
int sscanf(const char *s, const char *f, v1, v2, ..., vn) int swscanf(const wchar_t *s, const wchar_t *f, v1, v2, ..., vn)
書式 f に従って文字列 s から文字や数値を取り出し、v1 〜 vn の変数に格納します。 v1 〜 vn には、対応する型の変数へのポインタを指定します。
書式 f の中に指定する %s や %d などのパラメータが、取り出される値になります。 パラメータは、左から順に v1 〜 vn の変数に対応します。
%s や %d などの主なパラメータは、次のとおりです。
| パラメータ | 対応する値 |
|---|---|
| %c | 文字 |
| %s | 文字列 |
| %d | 10進数 |
| %f | 小数点数(float) |
| %e | 浮動小数点数(float) |
なお、値の区切りは、半角スペース、タブ、改行などの空白文字です。
連続した空白文字は、一つの区切りになります。
s … 文字列
f … 書式
v1 〜 vn … 入力された値を格納する変数のポインタ
・取り出し成功 …取り出した値を格納した変数の個数
・取り出し失敗 … EOF
・取り出す値がない … EOF
Copyright (C) 2005-2007 Noto Watabe. All rights reserved.
e-mail:wmh@always-pg.com