2013年6月5日水曜日

開発環境

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

その他参考書籍

演習 8-4.

コード

sample.c

int fseek(FILE *fp, long offset, int origin)
{
    long rc = 0;
    int n;
    
    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 ((n = fp->ptr - fp->base) > 0)
            if(write(fp->fd, fp->base, n) !=n)
                rc = -1;
            if(rc != -1)
                rc = lseek(fp->fd, offset, origin);
    }
    return rc == -1 ? -1 : 0;
}

コンパイルしてもエラーが無かったし、こんな感じでいいのかなぁ。

0 コメント:

コメントを投稿