微软100题(20)字符串到整数的转化

题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。

例如输入字符串"345",则输出整数345


多考虑一些情况,如   345,前面有空格的, -345 +345前面有符号的,3#45,中间有非法字符的等等

bool valid = true;
#define INT_MAX ((int)0x7FFFFFFF)
#define INT_MIN ((int)0x80000000)
int StrToInt(char* str)
{
	bool minus = false;
	bool valid = false;
	int result=0;
	if(str==NULL) return 0;
	char* p = str;
	while(*p==' ')
		p++;
	if(*p == '-')
	{
		minus = true;
		p++;
	}
	else if(*p=='+')
		p++;
	while (*p != '\0')
	{
		valid = true;
		if(*p<0 || *p >9)
		{
			valid = false;
			return 0;
		}
		result += result*10 + (*p -'0');
		if(minus && result>INT_MAX+1 || !minus && result > INT_MAX)
		{
			valid = false;
			return 0;
		}
		p++;
	}
	if(minus)
		result = (-1)*result;
	return result;
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值