atoi函数---使用和模拟实现
atoi函数在Cplusplus中的定义
atoi函数的使用
#include <stdio.h> #include <stdlib.h> int main() { char arr[20] = "4831213"; int ret = 0; ret = atoi(arr); printf("arr:%s\n", arr); printf("ret:%d\n", ret); return 0; }
atoi函数的模拟实现
#include <stdio.h> #include <stdlib.h> #include<ctype.h> #include<assert.h> enum State//判断是否是合法转化 { yes,//合法 no//非法 }state = no; int my_atoi(const char* str) { assert(str); if (*str == '\0') {//空字符串返回0 return 0; } if (isspace(*str))//返回值不为0,代表是空格 { str++; } //到这里str后面就一定不是空格了 int flag = 1; if (*str == '+') { flag = 1; str++; } else if (*str == '-') { flag = -1; str++; } //需要把字符串中所有的字符串全部判断一遍 long long ret = 0; while (*str != '\0') { if (isdigit(*str)) { //是数字字符 把字符1转换为数字1——》 ’1‘-’0‘=1 ret = ret * 10 + (*str - '0') * flag; if (ret > INT_MAX) { ret = INT_MAX; } if (ret < INT_MIN) { ret = INT_MIN; } } else {// 不是数字字符 return (int)ret; } str++; } if (*str == '\0') { state = yes; } return (int)ret; } int main() { int val; char str[20] = "84841548"; int num = my_atoi(str); if (state == yes) { printf("有效转换:%d\n", num); } else { printf("无效转换:%d\n", num); } return 0; }