您的位置:首页 > 其它

把字符串转换为对应的整数

2016-06-21 17:04 232 查看

这个问题的难点在于能否把边界条件考虑齐全:

一:开始时遇到空格时如何处理 //如            1234565dafsgdgg

二:在开始时有很多0如何处理 //   000001341asdfgg

三:在最前面遇到+-号怎么处理,在输出时如何处理 // +13454fdggfgf,-123435

四:当转换的整数越界了怎么处理// 134253678976543245678543

五:当遇到非数字字符时如何处理 //#&* aerty1345

六:为空串时如何处理(str == NULL)

typedef long long INT_64;

int StrToInt(char  *str)

{
static  INT_64  MAX = (INT_64)((unsigned)~0 >> 1);
static  INT_64  MIX = -(INT_64)((unsigned)~0 >> 1) - 1;
long long num = 0;

if (str == NULL)
{
return 0;
}
//空格
while (isspace(*str))
++str;
int sign = 1;
if (*str == '+' || *str == '-')
{
if (*str == '-')
{
sign = -1;
}
++str;
}
while (isdigit(*str))
{
int c = *str - '0';
if ((sign > 0) && ((num > MAX / 10) || ((num == MAX) && (c >= MAX % 10))))
{
num = MAX;
return num;
}
else if ((sign < 0) && ((num > MAX / 10) || ((num == MAX/10) && (c >= MAX % 10))))
{
num = MIX;
return num;
}
num = num * 10 + c;
++str;
}
if (sign > 0)
return num;
return -num;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息