面试中比较偏重基础的可能会考察到这一类的具体实现
是什么
atoi:将字符串转换为数字
如何处理
字符如何隐式的转换为数字:
一个char型的字符减去‘0’就会隐式的转换为数字,一个数字加上‘0’则会隐式的转换为字符,明白了这一点,就可以尝试着写atoi了
SourceCode – C语言
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #include <stdio.h> #include <assert.h> #include <ctype.h>
long long int my_atoi(const char *c){ long long int value = 0; int sign = 1; if( *c == '+' || *c == '-' ){ if( *c == '-' ) sign = -1; c++; } while (isdigit(*c)){ value *= 10; value += (int) (*c-'0'); c++; } return (value * sign); }
int main(void){ assert(5 == my_atoi("5")); assert(-2 == my_atoi("-2")); assert(-1098273980709871235 == my_atoi("-1098273980709871235")); }
|