atoi

这里写图片描述

#include<stdio.h>  
#include<stdlib.h>  
#include<assert.h>  
#include<string.h>  



enum State  
{  
    NORMAL,                        //正常  
    ABNORMAL                       //异常  
}state;  
state = ABNORMAL;                    //将初始状态置为异常  
int my_atoi(const  char *src)  
{  
    assert(src);  
    int flag = 1;  
    long long ret = 0;  
    while (*src==' ')                           //跳过空格  
    {  
        src++;  
    }  
    if (*src == '\0')                           //如果这时候字符串已经完了,则直接返回  
    {  
        return  0;  
    }  
    if (*src == '+')                            //接下来判断正负  
    {  
        src++;  
    }  
    else if (*src == '-')  
    {  
        flag = -1;  
        src++;  
    }  
    while (*src >= '0'&&*src <= '9')             //读取字符数字转换成整型  
    {  
        ret = ret * 10 + flag*(*src-'0');  
        if (ret >= INT_MAX|| ret <= INT_MIN)          //如果溢出的话直接跳出  
        {  
            break;  
        }  
        src++;  
    }  
    if (*src == '\0')                         //正常返回  
        state = NORMAL;                       //将状态置为正常  
    return (int)ret;  
}  
int main()  
{  
    char arr[50] = { 0 };  
    scanf("%s", arr);  
    int ret=my_atoi(arr);  
    if (state == ABNORMAL)  
        printf("异常返回\n");  
    printf("%d\n", ret);  
    system("pause");  
    return 0;  
}  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值