模拟atoi

typedef enum state
{
	VAILD,
	INVAILD
}STATE;
STATE state = VAILD;
int my_atoi(const char* str)
{
	assert(str);
	long long ret = 0;
	int flag = 1;
	while (isspace(*str))
	{
		str++;
	}
	if (*str == '-')
	{
		flag = -1;
		str++;
	}
	if (*str == '+')
	{
		str++;
	}
	while (*str)
	{
		if (isdigit(*str))
		{
			ret = ret * 10 + (*str - '0')*flag;
			if (ret >= INT_MAX || ret <= INT_MIN)
			{
				ret = 0;
				break;
			}
			str++;
		}
		else
		{
			state = INVAILD;
			ret = 0;
			break;
		}
	
	}
	return (int)ret;
}
int main()
{
	printf("%d", my_atoi("-12334"));
	system("pause");
}

你可能感兴趣的:(c)