c语言练习题60:模拟实现atoi

模拟实现atoi

c语言练习题60:模拟实现atoi_第1张图片

代码:

#include
#include
#include
#include
int my_atoi(const char* str)
{
	assert(str != NULL);
	if (*str == '\0')
	{
		return 0;
	}
	//isspace 判断一个字符是不是空格
	while (isspace(*str))
	{
		str++;
	}
	//代码执行到这里后str指向的是一个非空格的字符
	int flag = 1;
	if (*str == '+') {
		flag = 1;
		str++;
	}
	if (*str == '-') {
		flag = -1;
		str++;
	}
	//代码执行到这里后能够判断正负数
	long long ret = 0;
	while (*str != '\0') {
		//判断是否为数字字符
		if (isdigit(*str)) {//利用ASCII表
			ret = ret * 10 + (*str) - '0';
			if (ret > INT_MAX)
			{
				return INT_MAX;
	        }
			if (ret <  INT_MIN)
			{
				return INT_MIN;
			}
		}
		else
		{
			//直接结束转换
			return (int)ret * flag;
		}
		str++;
	}
	return (int)ret * flag;
}
int main() {
	const char* str = "   0 -123abd";
	int ret = my_atoi(str);
	printf("%d\n", ret);
	return 0;
}

结果:

c语言练习题60:模拟实现atoi_第2张图片

你可能感兴趣的:(c语言,开发语言)