uio.c

来自「gcc-2.95.3 Linux下最常用的C编译器」· C语言 代码 · 共 70 行

C
70
字号
#include "f2c.h"#include "fio.h"#include <sys/types.h>uiolen f__reclen;#ifdef KR_headersdo_us(number,ptr,len) ftnint *number; char *ptr; ftnlen len;#elsedo_us(ftnint *number, char *ptr, ftnlen len)#endif{	if(f__reading)	{		f__recpos += (int)(*number * len);		if(f__recpos>f__reclen)			err(f__elist->cierr, 110, "do_us");		if (fread(ptr,(size_t)len,(size_t)(*number),f__cf) != *number)			err(f__elist->ciend, EOF, "do_us");		return(0);	}	else	{		f__reclen += *number * len;		(void) fwrite(ptr,(size_t)len,(size_t)(*number),f__cf);		return(0);	}}#ifdef KR_headersinteger do_ud(number,ptr,len) ftnint *number; char *ptr; ftnlen len;#elseinteger do_ud(ftnint *number, char *ptr, ftnlen len)#endif{	f__recpos += (int)(*number * len);	if(f__recpos > f__curunit->url && f__curunit->url!=1)		err(f__elist->cierr,110,"do_ud");	if(f__reading)	{#ifdef Pad_UDread#ifdef KR_headers	int i;#else	size_t i;#endif		if (!(i = fread(ptr,(size_t)len,(size_t)(*number),f__cf))		 && !(f__recpos - *number*len))			err(f__elist->cierr,EOF,"do_ud");		if (i < *number)			memset(ptr + i*len, 0, (*number - i)*len);		return 0;#else		if(fread(ptr,(size_t)len,(size_t)(*number),f__cf) != *number)			err(f__elist->cierr,EOF,"do_ud");		else return(0);#endif	}	(void) fwrite(ptr,(size_t)len,(size_t)(*number),f__cf);	return(0);}#ifdef KR_headersinteger do_uio(number,ptr,len) ftnint *number; char *ptr; ftnlen len;#elseinteger do_uio(ftnint *number, char *ptr, ftnlen len)#endif{	if(f__sequential)		return(do_us(number,ptr,len));	else	return(do_ud(number,ptr,len));}

⌨️ 快捷键说明

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