2013年9月9日月曜日

開発環境

プログラミング言語C 第2版 ANSI規格準拠 (B.W. カーニハン D.M. リッチー (著)、 石田 晴久 (翻訳)、共立出版)の第8章(UNIXシステム・インタフェース)、8.4(ランダム・アクセス - Lseek)、8.5(例 - Fopen と Getc の実現)、演習8-4を解いてみる。

その他参考書籍

演習 8-4.

コード

sample.c

int main(int argc, char *argv[])
{    
    return 0;
}

#include <unistd.h>

int fseek(FILE *fp, long offset, int origin)
{
    unsigned count;
    long rc = 0;
    
    if (fp->flag & _READ) {
        if (origin == 1) {
            offset -= fp->cnt;
        }
        rc = lseek(fp->fd, offset, origin);
        fp->cnt = 0;
    } else if (fp->flag & _WRITE) {
        if ((count = fp->ptr - fp->base) > 0) {
            if (write(fp->fd, fp->base, count) != count) {
                rc = -1;
            }
        }
        if (rc != -1) {
            rc = lseek(fp->fd, offset, origin);
        }
    }
    return (rc == -1) ? -1 : 0;
}

入出力結果(Terminal)

$ cc sample.c
$

とりあえずコンパイルは出来た。

0 コメント:

コメントを投稿