:: reverse dictionary ::
※ソースファイルについて
ストリームを指定の位置に移動するには、fseek 関数を使います。
#include<stdio.h>#include<stdlib.h>#include<string.h>
FILE *fp;intnum;chardata[256]; fp = fopen("sample.txt", "rb");if(fp == NULL) { printf("sample.txt を開けませんでした。\n");returnEXIT_FAILURE; } memset(data, 0,sizeof(data)); /* NULL文字で初期化 */ /* 先頭から4バイト後ろに移動 */ fseek(fp, 4, SEEK_SET); /* 3バイトずつ読み込み */ num = fread(data,sizeof(char), 3, fp); data[num++] = ' '; num += fread(data + num,sizeof(char), 3, fp); /* 現在位置から4バイト後ろに移動 */ fseek(fp, 4, SEEK_CUR); /* 4バイト読み込み */ data[num++] = ' '; num += fread(data + num,sizeof(char), 4, fp); /* 終端から5バイト前に移動 */ fseek(fp, -5, SEEK_END); /* 3バイト読み込み */ data[num++] = ' '; num += fread(data + num,sizeof(char), 3, fp); fclose(fp);
sample.txt の内容が
ABCDEFGHIJKLMNOPQRSTUVWXYZ
となっている場合、data は "EFG HIJ OPQR VWX" になります。
intfseek(FILE *fs,longn,intdp)
初期位置 dp から n バイト目の位置にストリーム fs を移動します。
移動に成功した場合は 0 、失敗した場合は 0 以外の値を返します。
初期位置 dp には、次の定数のいずれかを指定します。
| 定数 | 初期位置 |
|---|---|
| SEEK_CUR | ファイルの現在位置 |
| SEEK_SET | ファイルの先頭 |
| SEEK_END | ファイルの終端 |
n には、マイナスの値も指定できます。
マイナスの値を指定した場合は、ストリームを前方向に移動します。
範囲外の位置を指定した場合は、ファイルの先頭または終端になります。
fs … ファイルストリーム
n … 初期位置からの移動量(バイト数)
dp … 初期位置
・移動に成功 … 0
・移動に失敗 … 0 以外の値
読み込みと書き込みは、移動した位置の次のバイトから行われます。
Copyright (C) 2005-2007 Noto Watabe. All rights reserved.
e-mail:wmh@always-pg.com