关于atoi函数的实现c++

运行不对,编译器不报错
2025-01-05 11:36:19
推荐回答(1个)
回答1:

namespace xx
{
int atoi(const char *p)
{
bool negative = false;
int value = 0;

if(p == NULL || p[0] == 0)
return 0;
else if(p[0] == '-')
{
negative = true;
++p;
}
else if(p[0] == '+')
{
++p;
}

while(*p >= '0' && *p <= '9')
{
value = value * 10 + *p - '0';
++p;
}

return negative?-value:value;
}
}

int main(int argc, char* argv[])
{
printf("%d\n",xx::atoi("12345"));
printf("%d\n",xx::atoi("-12345"));
printf("%d\n",xx::atoi("012345"));
printf("%d\n",xx::atoi("-012345"));
printf("%d\n",xx::atoi("a12345"));
printf("%d\n",xx::atoi("012345.90000"));
return 0;
}


说明:

1、为了防止与标准的atoi冲突,所以将自己实现的atoi放到了xx命名空间;

2、没有处理溢出的情况,例如atoi("12345678901234567890")