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

ホーム > C 標準関数逆引き辞典 > ファイル > ストリームを指定の位置に移動する

C 標準関数逆引き辞典

:: reverse dictionary ::

ファイル

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


ストリームを指定の位置に移動する

ストリームを指定の位置に移動するには、fseek 関数を使います。

≪宣言≫

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *fp;
int num;
char data[256];

fp = fopen("sample.txt", "rb");
if (fp == NULL)
{
  printf("sample.txt を開けませんでした。\n");
  return EXIT_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" になります。

▼ 関数

int fseek(FILE *fs, long n, int dp)

初期位置 dp から n バイト目の位置にストリーム fs を移動します。
移動に成功した場合は 0 、失敗した場合は 0 以外の値を返します。

初期位置 dp には、次の定数のいずれかを指定します。

定数 初期位置
SEEK_CUR ファイルの現在位置
SEEK_SET ファイルの先頭
SEEK_END ファイルの終端

n には、マイナスの値も指定できます。
マイナスの値を指定した場合は、ストリームを前方向に移動します。

範囲外の位置を指定した場合は、ファイルの先頭または終端になります。

●引数

fs … ファイルストリーム
n … 初期位置からの移動量(バイト数)
dp … 初期位置

●戻り値

・移動に成功 … 0
・移動に失敗 … 0 以外の値

●補足

読み込みと書き込みは、移動した位置の次のバイトから行われます。

注目キーワード ベスト5

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

ファイル - file -


ホーム > C 標準関数逆引き辞典 > ファイル > ストリームを指定の位置に移動する

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