atoi函数是将字符串转化为整型数的一个函数。
实现思路:
(1)遍历字符串,依次将字符数转化为整数;
(2)若当前字符为字符数字,就将其转化为整数;
(3)若当前字符不是字符数字,不管,指针后移,继续判定后面的字符
注意:
(1)最后我们得到的只有数字,没有任何字符,所以每次得到的数字都要+已转化好的数字*10,这样最后才会转化为一个整数。
(2)要注意字符串中是否带有正负号,要处理正负的问题。
下面直接贴代码:
#include <stdio.h> #include <assert.h> #include <string.h> #include <stdlib.h> #include <ctype.h> int StrToInt(const char *str) { assert(str); int num = 0; int flag = 1; int err = 0; char *p = (char *)str; while (*p != '\0') { if (*p == ' ') { p++; } else if(*p == '+')//正数 { p++; flag = 1; } else if(*p == '-')//负数 { p++; flag = -1; } else if(*p > '0' && *p < '9')//字符数转化为整数数字 { int n = *p - '0'; p++; num = (num * 10 + n); err = 1; } else { p++; } } if (err == 1) return flag*num; else return 0; } int main() { char str1[] = "abcd"; char str2[] = "1234"; char str3[] = "-1234"; char str4[] = "1234abcd"; char str5[] = "123abcd456"; printf("%s\n", str1); printf("%d\n", StrToInt(str1)); printf("%s\n", str2); printf("%d\n", StrToInt(str2)); printf("%s\n", str3); printf("%d\n", StrToInt(str3)); printf("%s\n", str4); printf("%d\n", StrToInt(str4)); printf("%s\n", str5); printf("%d\n", StrToInt(str5)); system("pause"); return 0; }
运行结果为: