思路:
列如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; }