atoi.c

来自「<B>Digital的Unix操作系统VAX 4.2源码</B>」· C语言 代码 · 共 51 行

C
51
字号
/* @(#)atoi.c	4.3 (Berkeley) 81/02/28 */#include <limits.h>#include <errno.h>atoi(p)register char *p;{	int maxover = INT_MAX/10; 	/* overflow check */	int maxunder = INT_MIN/10;	/* underflow check*/	int errflg = 0; 	register int n;	register int f;	n = 0;	f = 0;	for(;;p++) {		switch(*p) {		case ' ':		case '\t':			continue;		case '-':			f++;		case '+':			p++;		}		break;	}	while(*p >= '0' && *p <= '9')        {                if(n > maxover || n < maxunder)                        errflg++;                n = n*10;                if(f)                {                        if(INT_MIN + n > -(*p - '0'))                                errflg++;                }                else                        if(INT_MAX - n < *p - '0')                                errflg++;                n += *p++ - '0';        }        if(errflg)        {                errno = ERANGE;                return(f ? INT_MIN : INT_MAX);        }        else                return(f? -n: n);}

⌨️ 快捷键说明

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