您的位置:首页 > Web前端

c语言编程实现字符串向整数的转换(剑指offer)

2016-11-29 20:49 441 查看
看到这道题的时候,哦,挺简单的,就开始着手去写。然而错了,其实并不是你想的那样。

对于这道题我们要考虑的情况:

字符串前面有空格

前面的‘+’‘-’

定义的int是否溢出

不合法情况eg:“-123de4”

#include <stdio.h>
#include <Windows.h>
#include <assert.h>
#include <ctype.h>
typedef enum STATE
{
VAILD,
INVAILD

}STATE;
//定义一个枚举来标识合法与不合法状态
STATE state = VAILD;
//刚开始为合法
int my_atoi(const char* str)//   -12345
{
assert(str);
int flag = 1;
int len = strlen(str);
long long ret = 0;
if (*str=='\0') //刚开始遇到‘\0’直接return 00
{

return 0;
}
while (isspace(*str))
//处理空格的情况
{
str++;
}
if (*str == '-')
//遇到‘-‘将flag=-1
{
flag = -1;
str++;
}
if (*str == '+')
{
str++;
}
while (*str)
{
if (isdigit(*str))
{
ret= ret * 10 + (*str - '0')*flag;
//遇到数字依次累加
if ((ret > INT_MAX) || (ret < INT_MIN))
//判断是否溢出
{
ret = 0;
//溢出返回0
break;
}
str++;
}

else
{       state = INVAILD;
//非法遇到的字符不是数字,返回0
ret = 0;
break;
}
}
return (int)ret;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐