#include <sys/types.h> #include <unistd.h> long tell(int handle) handle : ファイルハンドル
#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); off = tell(disk); printf("offset %ld\n",off); buf = (char *)(&k2); read(disk, buf, 4); off = tell(disk); printf("offset %ld\n",off); printf("x2 %5.1lf 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); off = tell(disk); printf("offset %ld\n",off); close(disk); return 0; }
offset 8 offset 12 x2 10.5 k2 21 offset 8 k3 21 offset 12
菅沼ホーム | 本文目次 | 演習問題解答例 | 付録目次 | 索引 |