深入解析atoi函数的模拟实现与相关知识点

深入解析atoi函数的模拟实现与相关知识点

引言

atoi函数是C语言中常用的字符串转整数的标准库函数,其内部实现涉及字符处理、指针运算等多个关键知识点。在本文中,我们将深入梳理atoi相关的知识,模拟实现该函数,并通过代码注释详细解读其内部工作原理。

atoi函数的模拟实现

#include
#include
#include
#include
#include

int Myatoi(char* str)
{
	assert(str != NULL);

	//1. 去除空格 
	while (isspace(*str))
	{
		str++;
	}
	//2. 判断有没有正负号
	int flg = 1;
	if (*str == '+')
	{
		//正数
		flg = 1;
		//判断下一个字符
		str++;
	}//-123\0
	else if (*str == '-')
	{
		//负数
		flg = -1;
		str++;
	}
	//3. 如何把数字字符 变成一个整型数字 ‘1’-》 1 
	//-123\0  ->  -12a3
	long long ret = 0;
	while (*str != '\0')
	{
		//是不是数字字符 
		if (isdigit(*str))
		{
			ret = ret * 10 + (*str - '0') * flg;
			if (ret > INT_MAX || ret < INT_MIN)
			{
				return 0;//超过了int的表示范围 
			}
		}
		else
		{
			return ret;//目前已经将非数字字符之前算完到ret当中了 
		}
		str++;
	}
	return ret;
}

int main()
{
	int ret = Myatoi("12a26");
	printf("%d\n", ret);
	return 0;
}

atoi相关知识点解读

  1. 字符与ASCII码:

字符在计算机中以ASCII码形式存储,'0’的ASCII码为48,通过减去字符’0’可以得到相应数字。

  1. 指针与字符串:

字符串是字符数组,而数组名是指向数组首元素的指针。在my_atoi函数中,通过指针s遍历字符串。

  1. 指针运算:

指针可以通过算术运算进行移动,++s实现了指针的移动。

代码实例及注释

int main() 
{
    const char *myString = "   -12345";
    int result = my_atoi(myString);
    printf("Converted integer: %d\n", result);
    return 0;
}
  1. 代码注释:

处理空白字符、正负号、将字符转换为整数。

结语

通过深入梳理atoi函数的模拟实现和相关知识点,我们更好地理解了字符串到整数的转换过程,同时也加深了对字符处理和指针运算的认识。希望这篇文章对你在C语言学习中提供了有益的信息。

你可能感兴趣的:(算法,c语言,学习,开发语言,c++)