#include <sys/types.h> #include <unistd.h> long lseek(int handle, long offset, int origin) handle : ファイルハンドル offset : 基準点からのバイト数 origin : 基準点.以下の定数の内どれかを選びます SEEK_CUR : 現在の位置 SEEK_END : ファイルの終端 SEEK_SET : ファイルの先頭
#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> int main() { double x1 = 10.5; double x2; long k1 = 21; long k2, k3, off; int disk; char *buf; /* ディスクへの出力 */ disk = open("data", O_WRONLY|O_CREAT, S_IREAD); buf = (char *)(&x1); write(disk, buf, 8); buf = (char *)(&k1); write(disk, buf, 4); close(disk); /* ディスクからの入力 */ disk = open("data", O_RDONLY); buf = (char *)(&x2); read(disk, buf, 8); buf = (char *)(&k2); read(disk, buf, 4); printf("x2 %5.1f k2 %3ld\n", x2, k2); off = lseek(disk, 8, SEEK_SET); /* ポインタの移動 */ printf("offset %ld\n", off); buf = (char *)(&k3); read(disk, buf, 4); printf("k3 %3ld\n", k3); close(disk); return 0; }
x2 10.5 k2 21 offset 8 k3 21
菅沼ホーム | 本文目次 | 演習問題解答例 | 付録目次 | 索引 |