fseek.c

来自「unix v7是最后一个广泛发布的研究型UNIX版本」· C语言 代码 · 共 49 行

C
49
字号
/* * Seek for standard library.  Coordinates with buffering. */#include	<stdio.h>long lseek();fseek(iop, offset, ptrname)	register FILE *iop;	long offset;{	register int c;	long p;	iop->_flag &= ~_IOEOF;	if (iop->_flag & _IOREAD) {		if (ptrname < 2 && iop->_base && !(iop->_flag&_IONBF)) {			c = iop->_cnt;			p = offset;			if (ptrname == 0)				p += c - lseek(fileno(iop), 0L, 1);			else				offset -= c;			if (!(iop->_flag&_IORW) && c > 0 && p <= c			    && p >= iop->_base - iop->_ptr){				iop->_ptr += (int) p;				iop->_cnt -= (int) p;				return(0);			}		}		if (iop->_flag & _IORW) {			iop->_ptr = iop->_base;			iop->_flag &= ~_IOREAD;		}		p = lseek(fileno(iop), offset, ptrname);		iop->_cnt = 0;	} else if(iop->_flag & (_IOWRT|_IORW)) {		fflush(iop);		if (iop->_flag & _IORW) {			iop->_cnt = 0;			iop->_flag &= ~_IOWRT;			iop->_ptr = iop->_base;		}		p = lseek(fileno(iop), offset, ptrname);	}	return(p==-1? -1: 0);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?