英文文档阅读学习atoi

文档链接:atoi - C++ Reference (cplusplus.com)

如果可以看的懂英文的可以直接看这个图,看不明白也没关系,可以看一下下面的翻译:

 这是一些c语言的相关单词意思:

C-string——使用空字符 0 结尾的一维字符数组

as in isspace——如果 c 是一个空白字符,则该函数返回非零值(true),否则返回 0(false)。

non-whitespace character——不为空字符;

base-10 digits——十进制数字,即0、1、2、3、4、5、6、7、8、9这10个数字

 翻译:

①解析C字符串str,将其内容解释为整数,并将其作为int类型的值返回。
②该函数首先丢弃尽可能多的空白字符(如isspace函数中所述),直到找到第一个非空白字符为止。然后,从该字符开始,接受一个可选的初始加号或减号,然后跟随尽可能多的十进制数字,并将它们解释为一个数值。
③字符串可以包含形成整数的字符之后的其他字符,这些字符将被忽略,并不会影响此函数的行为。
④如果字符串str中第一个非空白字符序列不是有效的整数,或者如果不存在这样的序列,因为str为空或只包含空白字符,则不执行转换,并返回零。

 简单的来讲就是该函数可以将字符串里面的数字字符转化为整形

打印举例:

 

反而2 3 4都在说一下特殊案例,

特殊案例就会以举例展示: 

特例 1:

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int ret = atoi("    -123");
	printf("%d ", ret);
	return 0;
}

特例 2:

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int ret = atoi("    123");
	printf("%d ", ret);
	return 0;
}

特例 3:

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int ret = atoi("    123asd");
	printf("%d ", ret);
	return 0;
}

特例 4:

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int ret = atoi("");//空
	printf("%d ", ret);
	return 0;
}

特例 5:

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int ret = atoi("NULL");
	printf("%d ", ret);
	return 0;
}

特例 6:

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int ret = atoi("11111111111111111111111111111111");//33个1,超过了整形int的范围
	printf("%d ", ret);
	return 0;
}

特例 7:

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int ret = atoi("-11111111111111111111111111111111");//33个1,超过了整形int的范围
	printf("%d ", ret);
	return 0;
}

那么对应打印信息为:

 1:

2: 

3:

4: 

5: 

6:但是在加1还是这个数,因为已经超过了整形范围

7:同6,

 



了解完后我们就知道了atoi的作用了,为了加深理解在举一个例子:

因为第一个为,不是有效的整形字符,所以为0;//也就可以说是非法。



atoi的实现 

 

int atoi_my(const char *str)
{
	int s=0;
	bool falg=false;
	
	while(*str==' ')
	{
		str++;
	}
 
	if(*str=='-'||*str=='+')
	{
		if(*str=='-')
		falg=true;
		str++;
	}
 
	while(*str>='0'&&*str<='9')
	{
		s=s*10+*str-'0';
		str++;
		if(s<0)
		{
			s=2147483647;
			break;
		}
	}
	return s*(falg?-1:1);

}

相关推荐

  1. 英语阅读文章

    2024-04-29 02:50:02       9 阅读
  2. 英语阅读挑战

    2024-04-29 02:50:02       23 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-29 02:50:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-29 02:50:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-29 02:50:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-29 02:50:02       20 阅读

热门阅读

  1. 商城数据库88张表练习85~88

    2024-04-29 02:50:02       14 阅读
  2. 洛谷 P3810 【模板】三维偏序(陌上花开)

    2024-04-29 02:50:02       12 阅读
  3. ASTM F3008-12(2020) 软木地砖检测

    2024-04-29 02:50:02       14 阅读
  4. 数学专题1 - 素数筛(2)

    2024-04-29 02:50:02       12 阅读
  5. C语言总结二:分支与循环(压缩版)

    2024-04-29 02:50:02       13 阅读
  6. C++_跨平台编译_cmakefile中_添加内容

    2024-04-29 02:50:02       15 阅读