我是靠谱客的博主 从容小蝴蝶,最近开发中收集的这篇文章主要介绍linux中atoi函数的实现 值得借鉴,C语言模拟实现atoi函数的实例详解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

C语言模拟实现atoi函数的实例详解

atoi函数,主要功能是将一个字符串转变为整数,例如将“12345”–>12345。但在实现过程中,我们难免会因为考虑不够全面而漏掉比较重要的几点,今天就总结一下实现atoi函数需要注意的地方。

1.指针为NULL

2.字符串为空字符串

3.空白字符

4.正号与负号问题

5.溢出问题

6.异常字符处理

接下来看代码:(具体几种问题处理都在代码的注释中说明)

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

#include

#include

//定义两个枚举常量来表示状态

enum STATE

{

VALID, //合法

INVALID,//非法

};

enum STATE state = INVALID;

int my_atoi(const char *str)

{

int flag = 1;

long long ret = 0;//定义为比int存储范围还要大的类型,防止后面判断溢出时出错。

//空指针

assert(str);

//空字符串

if (*str == "")

{

return 0;

}

//空白字符

while (isspace(*str))//用函数isspace判断是否为空白字符

{

str++;

}

//遇到正负号

if (*str == '-')

{

flag = -1;

str++;

}

if (*str == '+')

{

str++;

}

//

while (*str)

{

//if (*str >= '0'&&*str <= '9')

if (isdigit(*str))//用函数isdigit判断是否为数字字符

{

ret = ret * 10 + flag*(*str - '0');

//判断是否溢出

if (ret > INT_MAX || ret < INT_MIN)

{

return ret;

}

}

//异常字符

else

{

break;

}

str++;

}

state = VALID;

return ret;

}

int main()

{

char *p = "12345";

char *q = " -12345";

int ret = my_atoi(p);

int ret2 = my_atoi(q);

printf("%dn", ret);

printf("%dn", ret2);

system("pause");

return 0;

}

运行结果:

0a158d1f234f71dd1b7af5f5219f2cff.png

以上就是C语言模拟实现atoi函数的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

时间: 2017-08-09

最后

以上就是从容小蝴蝶为你收集整理的linux中atoi函数的实现 值得借鉴,C语言模拟实现atoi函数的实例详解的全部内容,希望文章能够帮你解决linux中atoi函数的实现 值得借鉴,C语言模拟实现atoi函数的实例详解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部