介绍
今天就跟大家聊聊有关怎么在C语言项目中实现一个atoi函数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
<强> C语言模拟实现atoi函数的实例详解强>
atoi函数,主要功能是将一个字符串转变为整数,例如将“12345”→12345。
1。指针为空
2。字符串为空字符串
3。空白字符
4。正号与负号问题
5。溢出问题
6。异常字符处理
接下来看代码:(具体几种问题处理都在代码的注释中说明)
# define _CRT_SECURE_NO_WARNINGS 1 # include & lt; stdio.h> # include & lt; stdlib.h> # include & lt; ctype.h> # include & lt; assert.h>//定义两个枚举常量来表示状态 enum 状态 { 有效,才能,//合法 无效的,才能//非法 }; 时间=enum STATE  STATE 无效; int my_atoi (const char * str) { int 才能;flag =, 1; long 才能long ret =, 0;//定义为比int存储范围还要大的类型,防止后面判断溢出时出的错。//空才能指针 维护才能(str);//空才能字符串 if 才能;(* str ==,“\ 0“) {才能 ,,,return 0; ,,}//空才能白字符 while 才能;(isspace (str))//用函数isspace判断是否为空白字符 {才能 ,,,str + +; ,,}//才能遇到正负号 if 才能;(* str ==, & # 39; & # 39;) {才能 ,,,flag =, 1; ,,,str + +; ,,} if 才能;(* str ==, & # 39; + & # 39;) {才能 ,,,str + +; ,,} ,//while 才能;(str) {才能 ,,,//if (* str 祝辞=,& # 39;0 & # 39;,,* str & lt;=, & # 39; 9 & # 39;) ,,,if (isdigit (str))//用函数isdigit判断是否为数字字符 ,,,{ ,,,,,ret =, ret *, 10, +,国旗* (* str 作用;& # 39;0 & # 39;); ,,,,,//判断是否溢出 ,,,,,if (ret 祝辞,INT_MAX | |, ret & lt;, INT_MIN) ,,,,,{ ,,,,,,,return 回收; ,,,,,} ,,,} ,,,//异常字符 ,,, ,,,{ ,,,,,休息; ,,,} ,,,str + +; ,,} state =,才能有效; return 才能;回收; } int main () { char 才能;* p =,“12345”; char 才能;* q =,,, -12345,, int 才能;ret =, my_atoi (p); int 才能;ret2 =, my_atoi (q); ,,printf (“% d \ n",,随著; ,,printf (“% d \ n",, ret2); 系统才能(“pause"); return 才能;0; }
运行结果:
看完上述内容,你们对怎么在C语言项目中实现一个atoi函数有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。