【游戏算法】编码实现字符串转化为数字

6261

编码实现函数 atoi(),设计一个程序,把一个字符串转化为一个整型数值。

例如数字:“5486321”,转化成字符:5486321。

【答案】

int myAtoi(const char * str)
{
    int num = 0; //保存转换后的数值
    int isNegative = 0; //记录字符串中是否有负号
    int n = 0;
    char *p = str;
    if (p == NULL) //判断指针的合法性
    {
        return -1;
    }
    while (*p++ != '\0') //计算数字符串度
    {
        n++;
    }
    p = str;
    if (p[0] == '-') //判断数组是否有负号
    {
        isNegative = 1;
    }
    char temp = '0';
    for (int i = 0; i < n; i++)
    {
        char temp = *p++;    
        if (temp > '9' || temp < '0') //滤除非数字字符
        {
            continue;
	}
	if (num != 0 || temp != '0') //滤除字符串开始的 0 字符
	{
            temp -= 0x30; //将数字字符转换为数值
	    num += temp *int(pow(10, n - 1 - i));
	}
    }
    if (isNegative) //如果字符串中有负号,将数值取反
    {
        return (0 - num);
    }
    else
    {
        return num; //返回转换后的数值
    }
}


注意:此段代码只是实现了十进制字符串到数字的转化,读者可以自己去实现 2 进制,8 进制,10 进制,16 进制的转化。


特别声明:本文仅供交流学习 , 版权归属原作者,并不代表游民部落赞同其观点和对其真实性负责。若文章无意侵犯到您的知识产权,损害了您的利益,烦请与我们联系vmaya_gz@126.com,我们将在24小时内进行修改或删除。

相关推荐:

教程推荐