#include <iostream>
using namespace std;
int myAtoi(char str[])
{
int len = strlen(str);
int res = 0;
bool isNegative = 0;
int i = 0;
while(i < len)
{
if(str[i] == ' ')
i++;
else
break;
}
if(str[i] == '-')
{
isNegative = 1;
i++;
}
while(str[i] != '\0' && str[i] != ' ')
{
if(str[i] > '9' ||str[i] < '0')
{
printf("Incorrect format. Cannot be converted to integer.\n");
res = INT_MAX;
break;
}
int prev = res;
res = res * 10 + str[i] - '0';
//Overflow
if((res - (str[i] - '0')) / 10 != prev)
{
printf("Overflow\n");
res = INT_MAX;
break;
}
i++;
}
if(isNegative)
res *= -1;
return res;
};
int main()
{
char input[] = "-12345";
int res = myAtoi(input);
}
字符串转为整形 ATOI (including overflow process)
最新推荐文章于 2020-08-22 10:17:17 发布