演習8-4 K&R プログラミング言語C
2010年03月22日
演習8-4
/* fp に対してファイルの位置を指定する * バイナリ・ファイルに対しては、origin から offset 文字だけ離れたところにセットする * origin には MY_SEEK_SET (始め), MY_SEEK_CUR (現在位置), MY_SEEK_END (ファイルの終り) が指定可能 * テキスト・ファイルに対しては、offset はゼロ、または ftell (この場合は origin は MY_SEEK_SET) で返される値でなければならない * エラーの場合は fseek からはゼロ以外の値が返される */ int my_fseek(MY_FILE *fp, long offset, int origin) { int result = 0; if (fp == MY_NULL) { return -1; } if (fp->flag & _WRITE) { if (my_fflush(fp) == MY_EOF) { return MY_EOF; } result = lseek(fp->fd, offset, origin); } else if (fp->flag & _READ) { if (origin == MY_SEEK_CUR) { /* 現在位置からの場合 */ offset -= fp->cnt; } result = lseek(fp->fd, offset, origin); } return (result == -1) ? -1 : 0; }
プログラミング言語C 第2版 ANSI規格準拠
posted with amazlet at 09.11.27
B.W. カーニハン D.M. リッチー
共立出版
売り上げランキング: 9726
共立出版
売り上げランキング: 9726