【C语言】重要函数atoi的使用
创始人
2024-04-28 10:48:51
0

目录

         一、atoi函数的介绍

         二、atoi函数的使用

         三、atoi函数的模拟实现


一、atoi函数的介绍

一个专门将字符串转换为整数的库函数,具体用法如下:

字符串str,将其内容转化为整数,该整数作为int值返回。

二、atoi函数的使用

atoi函数的使用是非常简单的,如下:

int main()
{int ret = atoi("   -123");printf("%d\n", ret);return 0;
}

运行如下:

 

三、atoi函数的模拟实现

重要板块:模拟实现需要我们将所有可能出现的情况列举出来,才能够完美的模拟实现出atoi库函数,情况如下:

字符串合法性
“”非法
“NULL”非法
“    123”合法
“123abc”非法
“-123”合法
“11111111111111111”非法

1、字符串可以在构成整数的字符之后包含其他字符,这些字符将被忽略,并且对该函数的行为没有影响。

例如:123abc转换成123,字符被忽略,这种情况属于异常情况。

 2、该函数可以跳过多余的空白字符,直到找到第一个非空白字符。然后,从这个字符开始,取一个可选的初始加号或减号,后面跟着尽可能多的数字,并将它们转化为整数值。

例如:-123转换成-123。这种情况属于合法情况。

3、如果字符串的第一个非空白字符序列不是有效的整数,或者是字符串为空或只包含空白字符,则不执行转换。这种情况属于非法转换。

4、最后一种的转化情况之所以是非法转换,是因为整数值的大小是有限制的,太大的话,会出现越界,所以返回值有可能为随机值。

模拟实现atoi库函数的代码如下:

#include 
#include 
//设置两种状态,分别代表字符转换的合法性
enum Status
{VALID,//合法INVALID//异常
};
enum Status status = INVALID;
int my_atoi(const char* str)
{if (str == NULL){return 0;}if (*str == '\0'){return 0;}//处理空白字符while (isspace(*str))//如果前面有空格,跳过空格往后寻找符号或数字{str++;}int flag = 0;if (*str == '+'){flag = 1;str++;}else if (*str == '-'){flag = -1;str++;}//处理数字字符//-123long long ret = 0;while (isdigit(*str)){ret = ret * 10 + flag*(*str - '0');if (ret INT_MAX)//需要判断数字是否越界{return 0;}str++;}if (*str == '\0'){status = VALID;return (int)ret;}else{return (int)ret;}
}
int main()
{int ret = my_atoi("     -123");if(status == VALID)printf("合法的转换:%d\n", ret);elseprintf("非法的转换:%d\n", ret);return 0;
}


本文要是有不足的地方,欢迎大家在下面评论,我会在第一时间更正。

  老铁们,记着点赞加关注哦!!!  

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...