📄 stoi.c
字号:
/* stoi.c -- More powerful version of atoi */
static char rcsid[] = "@(#)stoi.c 1.1 13:15:03 7/1/92 EFC";
#define islower(c) ( 'a' <= (c) && (c) <= 'z' )
#define toupper(c) ( islower(c) ? (c) - ('a' - 'A') : (c) )
long int stol(instr)
register char **instr;
/* Convert string to integer. If string starts with 0x it is interpreted
* as a hex number, else if ti starts with a 0 it is octal, else it is
* decimal. Conversion stops on encountering the first character that
* is not a digit in the indicated radix. *instr is updated to point past
* the end of the number.
*/
{
register long int num = 0;
register char *str;
int sign = 1;
str = *instr;
while (*str == ' ' || *str == '\t' || *str == '\n' )
str++;
if (*str == '-')
{
sign = -1;
str++;
}
if (*str == '0')
{
++str;
if (*str == 'x' || *str == 'X')
{
str++;
while( ('0' <= *str && *str <= '9') ||
('a' <= *str && *str <= 'f') ||
('A' <= *str && *str <= 'F') )
{
num *= 16;
num += ('0' <= *str && *str <= '9') ?
*str - '0' :
toupper(*str) - 'A' + 10;
str++;
}
}
else
{
while( '0' <= *str && *str <= '7' )
{
num *= 8;
num += *str++ - '0';
}
}
}
else
{
while( '0' <= *str && *str <= '9')
{
num *= 10;
num += *str++ - '0';
}
}
*instr = str;
return ( num * sign );
}
int stoi(instr) /* INTeger version of stol */
char **instr;
{
return (int)stol(instr);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -