atoi 函数实现

#define INT_MAX ((int)0x7FFFFFFF) 
#define INT_MIN ((int)0x80000000)
//#define INT_MAX (~(unsigned int)0/2)

bool valid = true;

int myatoi(const * str)
{
	int num = 0;
	valid = false;

	if(NULL != str )
	{
		const *digit = str;
		bool minus = false;
		while(*digit==' ' ||  *digit == '\t')
        	digit++;
        if(*digit == '+'){
        	digit++;
        }
        else(*digit == '-'){
        	digit++;
        	minus = true;
        }
        while(*digit != '\0'){
        	if(*digit >= '0' && *digit <= '9'){
        		num=10*num + (*digit - '0');
        		digit++;
        	}
        	else{
        		num = 0;
        		break;
        	}
        }
        if(*digit == '\0'){
        	if((minus && num>INT_MAX + 1LL) || (!minus && num>INT_MAX))
        		return 0;
        	else{
        		valid = true;
        		if(minus)
        			num *= -1;
        		return num;
        	}
        }
    }
}


1.判空操作

2.空格、符号处理

3.最大整数和最小边界处理

4.全局变量标记数据是否有效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值