rdr.c

来自「Minix比较全的源码」· C语言 代码 · 共 79 行

C
79
字号
/* $Header$ *//* * (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands. * *          This product is part of the Amsterdam Compiler Kit. * * Permission to use, sell, duplicate or disclose this software must be * obtained in writing. Requests for such permissions may be sent to * *      Dr. Andrew S. Tanenbaum *      Wiskundig Seminarium *      Vrije Universiteit *      Postbox 7161 *      1007 MC Amsterdam *      The Netherlands * *//* Author: J.W. Stevenson */#include	<pc_file.h>#define	BIG	1e17extern		_rf();extern		_incpt();extern		_skipsp();extern int	_getsig();extern int	_getint();extern int	_fstdig();extern int	_nxtdig();static double		r;static int		pow10;static dig(ch) int ch; {	if (r>BIG)		pow10++;	else		r = r*10.0 + ch;}double _rdr(f) struct file *f; {	int i; double e; int is_signed,ch;	r = 0;	pow10 = 0;	_rf(f);	_skipsp(f);	is_signed = _getsig(f);	ch = _fstdig(f);	do		dig(ch);	while ((ch = _nxtdig(f)) >= 0);	if (*f->ptr == '.') {		_incpt(f);		ch = _fstdig(f);		do {			dig(ch);			pow10--;		} while ((ch = _nxtdig(f)) >= 0);	}	if ((*f->ptr == 'e') || (*f->ptr == 'E')) {		_incpt(f);		pow10 += _getint(f);	}	if ((i = pow10) < 0)		i = -i;	e = 1.0;	while (--i >= 0)		e *= 10.0;	if (pow10<0)		r /= e;	else		r *= e;	return(is_signed? -r : r);}

⌨️ 快捷键说明

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