英文文档阅读学习atoi

devtools/2024/9/23 20:59:29/

文档链接: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);}


http://www.ppmy.cn/devtools/23749.html

相关文章

开源项目AI Vtuber接入抖音直播间用弹幕实时和GPT互动使用教程(附相关整合包)

环境: AI Vtuber 整合包0417 问题描述: 开源项目AI Vtuber接入抖音直播间实时和GPT互动使用教程(附相关整合包) dou音直播间用弹幕实时和GPT互动 解决方案: AI Vtuber是一个由 【ChatterBot/ChatGPT/claude/langchain(本地/llm)/chatglm/text-generation-webui/闻达…

软硬件无缝集成:新加坡量子公司首创下一代量子集成平台

为了充分发挥量子系统的性能&#xff0c;已经公认的一个关键方法是在硬件和软件层之间实现紧密集成。这种集成使得软件能够充分利用硬件的所有特性&#xff0c;以实现最佳性能。随着行业努力开发能够提供量子优势的系统&#xff0c;实现这种高性能显然是非常必要的。 Horizon的…

如何安全完成第一次半程马拉松

报名 需要注意的是有的赛事需要有马拉松历史完赛成绩&#xff0c;有的不需要&#xff0c;而有的是人满则停止报名&#xff0c;还有的是抽签决定是否可以参赛。 尽量选择离得近的&#xff0c;不需要历史成绩&#xff0c;只需要体检报告就可以的&#xff0c;人满报名停止而非抽签…

Mac NTFS磁盘读写工具选择:Tuxera还是Paragon?

在Mac上使用NTFS磁盘时&#xff0c;选择一款合适的读写工具至关重要。Tuxera和Paragon作为两款备受推崇的Mac NTFS磁盘读写工具&#xff0c;都能够帮助用户轻松地实现NTFS格式的读写。那么&#xff0c;面对这两款功能强大的工具&#xff0c;我们应该如何选择呢&#xff1f;本文…

centos学习-命令行/图形界面快捷键大全

快捷键的使用可以大大提高工作效率&#xff0c;本文总结了centos常用的快捷键 命令行模式 快捷键解析Ctrl A将光标移动到行首Ctrl E将光标移动到行尾Ctrl ←/→将光标按单词向前或向后移动Ctrl B光标向前移动一个字符Ctrl F光标向后移动一个字符Ctrl K删除从光标位置到…

金荣中国模拟账户有什么用?实战演练,助力投资者稳健起步

在投资市场中&#xff0c;新手投资者往往面临着缺乏经验、不熟悉市场规则等问题&#xff0c;这些都可能导致投资者在真实交易中遭受损失。为了解决这个问题&#xff0c;金荣中国为投资者提供了一个模拟账户&#xff0c;那么金荣中国模拟账户有什么用&#xff1f;功能旨在通过实…

Linux基本指令(1)

一.使用XShell登录主机 首先要找到自己的云服务器公网ip&#xff0c;以我选择的华为云为例。 然后再终端输入ssh root公网ip &#xff08;注意在XShell里复制是ctrlInsert键&#xff0c;粘贴是shift Insert键&#xff09; 紧接着会出现这样一个界面&#xff0c; 输入密码…

设计模式之中介者模式

详细介绍 中介者模式&#xff08;Mediator Pattern&#xff09;是一种行为设计模式&#xff0c;它通过定义一个中介类来封装多个对象之间的交互&#xff0c;使各对象不需要显示地相互引用&#xff0c;从而降低耦合度&#xff0c;提高系统的可维护性和灵活性。中介者模式将原本一…