:: reverse dictionary ::
※ソースファイルについて
ファイルから書式付きで文字列や数値を読み込むには、fscanf 関数を使います。
#include<stdio.h>#include<stdlib.h>
FILE *fp;charch;charstr[256];intnum;floatflt; fp = fopen("sample.txt", "r");if(fp == NULL) { printf("sample.txt を開けませんでした。\n");returnEXIT_FAILURE; } /* 読み込み */ fscanf(fp, "%c%s%d%f", &ch, str, &num, &flt); fclose(fp);
sample.txt の内容が
C プログラム 123 0.456789
となっている場合、ch は 'C' 、str は "プログラム" 、num は 123 、flt は 0.456789 になります。
ワイド文字列の場合は fwscanf 関数を使います。
#include<locale.h>#include<stdio.h>#include<stdlib.h>
FILE *fp; wchar_t ch; wchar_t str[256];intnum;floatflt; setlocale(LC_ALL, "ja"); /* ロケールを日本語に設定 */ fp = fopen("sample.txt", "r");if(fp == NULL) { wprintf(L"sample.txt を開けませんでした。\n");returnEXIT_FAILURE; } /* 読み込み */ fwscanf(fp, L"%c%s%d%f", &ch, str, &num, &flt); fclose(fp);
sample.txt の内容が
C プログラム 123 0.456789
となっている場合、ch は 'C' 、str は "プログラム" 、num は 123 、flt は 0.456789 になります。
intfscanf(FILE *i,const char*f, v1, v2, ..., vn)intfwscanf(FILE *i,constwchar_t *f, v1, v2, ..., vn)
書式 f に従って、入力ストリーム i から値を読み込みます。 読み込んだ値を v1 〜 vn の変数に格納します。
v1 〜 vn には、対応する型の変数へのポインタを指定します。
書式 f の中に指定する %s や %d などのパラメータが、読み込む値になります。 パラメータは、左から順に v1 〜 vn の変数に対応します。
%s や %d などの主なパラメータは、次のとおりです。
| パラメータ | 対応する値 |
|---|---|
| %c | 文字 |
| %s | 文字列 |
| %d | 10進数 |
| %o | 8進数 |
| %x | 16進数 |
| %f | 小数点数(float) |
| %e | 浮動小数点数(float) |
なお、値の区切りは、半角スペース、タブ、改行などの空白文字です。
連続した空白文字は、一つの区切りになります。
i … 入力ストリームのポインタ
f … 書式
v1 〜 vn … 読み込んだ値を格納する変数のポインタ
・読み込み成功 … 読み込んだ値を格納した変数の個数
・読み込み失敗 … fscanf は EOF 、fwscanf は WEOF
・読み込む値がない … fscanf は EOF 、fwscanf は WEOF
Copyright (C) 2005-2007 Noto Watabe. All rights reserved.
e-mail:wmh@always-pg.com