atoll在linux c有实现,windows vs下是没有的,也不属于标准c语言库函数,但是我需要在vs下用到这个功能,下面我自己实现的代码:
long long atoll(const char* str)
{
long long e = 0;
long long tmpKeep = 0;
int i = 0;
const int len = strlen(str);
if (len <= 0) {
goto EXIT_FUN;
}
if (str[0] == '-') {
e = atoll(str + 1);
e = (-e);
goto EXIT_FUN;
}
for (i = 0; i < len; i++) {
if (str[i] > '9' || str[i] < '0') {
break;
}
tmpKeep = e;
e *= 10;
e += (((long long)(str[i] - '0')) & 0x00000000000000FF);
if (tmpKeep > e) {
/* 越界 */
e = 0;
goto EXIT_FUN;
}
}
EXIT_FUN:
return e;
}