admin管理员组文章数量:1794759
【C语言】重要函数atoi的使用
目录 一、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 <limits.h> #include <ctype.h> //设置两种状态,分别代表字符转换的合法性 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++; } //处理数字字符 //-123 long long ret = 0; while (isdigit(*str)) { ret = ret * 10 + flag*(*str - '0'); if (ret<INT_MIN || 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); else printf("非法的转换:%d\\n", ret); return 0; }本文要是有不足的地方,欢迎大家在下面评论,我会在第一时间更正。
老铁们,记着点赞加关注哦!!!版权声明:本文标题:【C语言】重要函数atoi的使用 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686495866a73959.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论