自定义函数实现atoi功能

思路:

列如char a[ ] =“123”

“1” “2” “3' "\0"

首先遍历这个字符串

知道这个字符串有多长

把单个字符转化为数字

1 *100(10的2次方)  +  2*10  +  3*1

#include<stdio.h>

int mystrlen(const char *s)    //得到字符串的长度 
{
    int len = 0;
    while(s[len])
    {
        len++;
    }
    return len;    
}

int mypow10(int n)   //得到10的n次方 
{
    if(n == 0)
       return 1;
    if(n == 1)
       return 10;
    
    int base = 10;
    int i;
    for(i = 1; i < n; i++)    //当我写为i=0时,输出的结果百位是0 
    {
        base *= 10;  //base = base * 10
    }   
    return base;
}

int mycharintoint(char c)   //把一个字符转化成0到9的整数 
{
    return c - '0';   //字符0的ASCII码是48,1的ASCII码是49,所以1的ASCII码就是 49-'0' 
}

int my_atoi(const char *nptr)    //*nPtr代表一个char类型指针变量,用于获取实际参数
{
    int len = mystrlen(nptr);   //得到字符串的长度 
    
    int i;
    int value = 0;
    for(i = 0; i < len; i++)    
    {
        nptr[i];
        value += mycharintoint(nptr[i]) * mypow10(len - i -1);
    }
    return value;
}

int main()
{
    char a[] = "1289";
    int i = my_atoi(a);
    printf("%d\n", i);
    return 0;
}

 

posted @ 2018-02-02 15:10  heheheda  阅读(295)  评论(0编辑  收藏  举报