实现 atoi 字符串转数字

Tags
C语言
字符串
ID
1
 
用 C 语言实现字符串转数字函数:int atoi(const char *str)
⚠️
需要改进:判断数字的正负
 
这题只能是默认字符串是 ascii 编码的数字字符串,不做其他的字符判断了。
 
递归的思路:
int atoi(const char *str) { if (strcmp(str, "") == 0) return 0; int tenant = 1; for (int i = 1; i < strlen(str); i++) tenant *= 10; return (*str - '0') * tenant + atoi(str + 1); }
 
当然,因为没有尾递归,且每次检查字符串长度,所以没有直接循环来得快:
 
int atoi(const char *str) { const char *p = str; int ret = 0; while (*p != '\0') { if (*p > '0' && *p < '9') { ret = ret * 10 + (*p - '0'); } p++; } return ret; }