用 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; }