微软面试100题之20题:输入一个表示整数的字符串,把该字符串转换成整数并输出

来源:互联网 发布:人工智能豆瓣 编辑:程序博客网 时间:2024/05/22 00:41
题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。

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

程序逻辑非常简单,但能不能写出稳定性很高的代码呢?这也许是公司看重考察的
一定要仔细分析,多加思考

分析:
1对指针是否做了空的判断,如果使用了为空的指针将导致程序崩溃
2输入是否是负数
3输入是否含有非法字符
4是否数据过大溢出

long long strToInt(char *str){    //写程序一定要注意稳定性,要对为NULL时做检查    if(str==NULL)    {        return 0;    }    //检验正负    bool isPositive=true;    char *tmpStr=str;    if(*tmpStr=='-')    {        isPositive=false;        tmpStr++;    }    if(*tmpStr=='+')    {        isPositive=true;        tmpStr++;    }        long long sum=0;    while(*tmpStr!='\0')    {        if(*tmpStr>'0' && *tmpStr<'9')//判断是不是只是数字,不是数字则返回        {            sum=sum*10+(*tmpStr-'0');            tmpStr++;            //判断是不是产生了溢出            if(sum>std::numeric_limits<int>::max())            {                return 0;            }        }        else        {            return 0;        }    }    if(isPositive==false)    {        sum=0-sum;    }    return sum;}


0 0
原创粉丝点击