lseek

提供: RAD Studio
移動先: 案内検索

io.h:インデックス への移動

ヘッダーファイル

io.h

カテゴリ

入出力ルーチン

プロトタイプ

long lseek(int handle, long offset, int fromwhere); 
__int64 _lseeki64(int handle, __int64 offset, int fromwhere); 

説明

ファイルポインタを移動します。

lseek は,handle に関連付けられたファイルポインタを,fromwhere で指定されたファイル位置から offset バイト後の新しい位置に設定します。fromwhere は,次のシンボル定数の 1 つです(io.h で定義)。

SEEK_CUR

現在のファイルポインタの位置

SEEK_END

ファイルの終わり(EOF)

SEEK_SET

ファイルの先頭


戻り値

lseek は,ファイルの先頭からポインタの新しい位置までのオフセット(バイト単位)を返します。エラーが発生した場合は -1 を返し,グローバル変数 errno に次のいずれかの値が設定されます。

EBADF

不正なファイルハンドル

EINVAL

無効な引数

ESPIPE

デバイスの不正なシーク


シークできないデバイス(ターミナルやプリンタなど)では,戻り値は定義されていません。

#include <sys\stat.h>
#include <string.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
int main(void)
{
    int handle;
    char msg[] = "This is a test";
    char ch;
    /* ファイルを作成します */
    handle = open("TEST.$$$", O_CREAT | O_RDWR, S_IREAD | S_IWRITE);
    /* ファイルにデータを書き込みます */
    write(handle, msg, strlen(msg));
    /* ファイルの先頭を探します */
    lseek(handle, 0L, SEEK_SET);
    /* EOF に到達するまで,ファイルから文字を読み取ります */
    do
    {
       read(handle, &ch, 1);
       printf("%c", ch);
    }  while (!eof(handle));
    close(handle);
    return 0;
}


移植性

POSIX Win32 ANSI C ANSI C++

+

+