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'){//空字符串返回0return 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‘=1ret = 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;
}