(C语言)atoi函数详解与模拟实现

目录

1. stoi详解

1.1 函数的特点:

演示1:

案例二:

实例2:

2. atoi函数的模拟实现:


1. stoi详解

头文件<stdlib,h>

函数有一个参数:str。它是指向char类型的指针类型,函数作用是将字符串中的数字转变为整型类型,并返回。

演示

1.1 函数的特点:

字符串开头是空格或制表符时,函数会自动跳过他们向后找直到找到正负号或数字,但找到数字后接着向后找,直到找到非数字的字符(包括空格)或\0停下,并以整型类型返回前面找到的数字。若第一个找到的不是数字而是字符那么函数会返回0。

演示1:

可见字符串前面的空格和制表符都被函数跳过了,字符a后面的数字也没有读取到,

案例二:

可见读取12后遇到空格就结束了。

实例2:

123前有字符a所以找到a后函数就停止了向后的遍历。

2. atoi函数的模拟实现:

#include <assert.h>
#include <ctype.h>

int my_atoi(const char* str)
{
	assert(str);
	int num = 0;
	while (isspace(*str))
	{
		str++;
	}
	if ((!isdigit(*str)) && (*str != '-') && (*str != '+'))
	{
		return 0;
	}
	if (*str == '+' || isdigit(*str))
	{
		if(*str=='+')
			str++;
		while (isdigit(*str))
		{
			num = num * 10 + (*str-48);
			str++;

		}
		return num;
	}
	else
	{
		str++;
		while (isdigit(*str))
		{
			num = num * 10 + (*str-48);
			str++;

		}
		return -num;
	}
}

在这里用到了字符分类函数isspace和isdigit,分别来判断是否是空白字符和是否是数字字符。

我们自己模拟实现的函数和库函数的作用是相同的

运行演示:(其他特殊情况不在演示)

运行成功,可见我们完成了模拟实现。

感谢观看,欢迎品论区讨论。

相关推荐

  1. C语言实现atoi函数实现

    2024-03-18 18:02:03       35 阅读
  2. atoi函数模拟实现

    2024-03-18 18:02:03       51 阅读
  3. C语言-atoi函数的使用和实现

    2024-03-18 18:02:03       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-18 18:02:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-18 18:02:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-18 18:02:03       82 阅读
  4. Python语言-面向对象

    2024-03-18 18:02:03       91 阅读

热门阅读

  1. 蓝桥杯刷题--python-13-并查集

    2024-03-18 18:02:03       43 阅读
  2. 手机怎么弄不同的ip地址

    2024-03-18 18:02:03       45 阅读
  3. C++——基础复习——模拟动态数组容器

    2024-03-18 18:02:03       37 阅读
  4. 【晴问算法】入门篇—贪心算法—最大组合整数

    2024-03-18 18:02:03       40 阅读