题目:
自己实现一个函数strToint,不能使用atoi或者其他类似的库函数。
解题思路:
这个题不难,主要是靠考虑到各种情况,
1、判断字符串是否为空
2、保存正负号
3、字符串中是否有无效字符(非数字)-->有该字符串无效
4、是否会溢出!!!
我们令出现上述情况时转换的int型数字为0,那么如何区分正常0和异常情况下的0,我们用一个标志位flag即可。
代码如下:
#include<iostream>
#include<stdio.h>
using namespace std;
int flag=0;
int strToint(char *str);
void main()
{
char str[]="123456";
cout<<strToint(str);
}
int strToint(char *str)
{
if(str==NULL||*str=='\0') return 0;
bool minus=false;
if(*str=='+')a
str++;
else if(*str=='-')
{
minus=true;
str++;
}
long long res=0;
int zf=minus?-1:1;
while(*str!='\0')
{
if(*str>='0'&&*str<='9')
{
res=res*10+zf*(*str-'0');
if((!minus&&res>0x7FFFFFFF)||(minus&&res<(int)0x80000000))
{
res=0;
break;
}
str++;
}
else
{
res=0;
break;
}
}
if(*str=='\0')
{
flag=1;
}
return (int)res;
}