模拟实现atoi函数

来源:互联网 发布:贪心算法的实例 编辑:程序博客网 时间:2024/05/22 18:35

函数功能:
atoi (表示 ascii to integer)是把字符串转换成整型数的一个函数,应用在计算机程序和办公软件中。atoi( ) 函数会扫描参数 ptr字符串,跳过前面的空白字符(例如空格,tab缩进等)。
可以通过isspace( )函数来检测),直到遇上数字或正负符号才开始做转换,而在遇到非数字或字符串结束时(‘\0’)才结束转换,并将结果返回(返回转换后的整数值);
模拟实现:

//模拟实现atoienum    //有效数字和无效数字的区分{    INVALUE=0,    VALUE};int num = INVALUE;int my_atoi(char *buff){    int flag = 1;    //正负号 1为正数 -1为负数    assert(buff);    //断言    long long ret = 0;   //因为有可能溢出,需要用long long来判断溢出    if (*buff == '\0')   //判断是否位空字符串    {        return 0;    }    //if (buff == NULL)   //判断空指针    //{    //  return;    //}    while (isspace(*buff))   //跳过空格    {        buff++;    }    if (*buff == '-')    //判断正负号    {        buff++;        flag = -1;    }      while (isdigit(*buff))     //isdigit:判断字符是否为0~9的十进制数      {        ret = ret * 10 + flag*(*buff - '0');  //赋值        buff++;        if ((ret > INT32_MAX) || (ret < INT32_MIN))     //溢出        {            num = INVALUE;         }        else        {            num = VALUE;  //没有溢出 改为有效        }    }    return int(ret);}int main(){    char buf[] = "12345";    int tmp = my_atoi("12@#$345");    if (num == 1)    {        printf("VALUE: %d\n", tmp);    }    else if (num == 0)    {        printf("INVALUE: %d\n", tmp);    }    system("pause");    return 0;}

测试结果为12;

原创粉丝点击