C语言模拟实现atoi函数的实例详解
时间:2019-03-31
本文章向大家介绍C语言模拟实现atoi函数的实例详解,主要包括C语言模拟实现atoi函数的实例详解使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
C语言模拟实现atoi函数的实例详解
atoi函数,主要功能是将一个字符串转变为整数,例如将“12345”?>12345。但在实现过程中,我们难免会因为考虑不够全面而漏掉比较重要的几点,今天就总结一下实现atoi函数需要注意的地方。
1.指针为NULL
2.字符串为空字符串
3.空白字符
4.正号与负号问题
5.溢出问题
6.异常字符处理
接下来看代码:(具体几种问题处理都在代码的注释中说明)
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <assert.h> //定义两个枚举常量来表示状态 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 == "\0") { 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("%d\n", ret); printf("%d\n", ret2); system("pause"); return 0; }
运行结果:
以上就是C语言模拟实现atoi函数的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
- Enterprise Library 4.0缓存应用程序块
- 通过.htaccess 让WordPress 的上传文件夹更安全
- asp.net 性能调较
- 零基础学习大数据,搭建Hadoop处理环境
- 为你的WordPress 博客开启两步验证功能(技术支持:谷歌)
- 为你的WordPress 博客开启两步验证功能(技术支持:谷歌)
- WordPress 注册页面显示自定义提示信息
- Windows Server 2008密码重设盘
- Dynamite动态排序库
- WordPress 顶部管理工具条添加自定义栏目
- WordPress 在后台文章和页面列表显示对应的ID
- WordPress 修改默认的 wp_ 数据库前缀
- WordPress自动在uploads文件夹内创建子文件夹
- MP6 Light:浅色型的扁平化WordPress 后台管理界面
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux里Makefile是什么?它是如何工作的?
- 详解Linux文件系统:ext4及更高版本
- Linux设置虚拟内存的教学与实战教程
- 详解Linux服务器状态、性能相关命令
- 【s3cmd】给s3cmd加点debug日志再编一个
- Linux获取当前脚本真实路径的方法
- 短视频商城源码,商城左侧菜单栏网页模板
- 谈一谈Linux系统重要的子目录问题
- Tensorflow 2.x Java api的maven包怎么找
- Linux上也有10个流行的Windows应用程序
- (译)SDL编程入门(14)动画精灵和VSync
- 在Ubuntu Linux上安装和使用Git和GitHub
- 10个好用的 HTML5 特性
- Linux下升级python和安装pip的详解
- Linux中使用top命令的技巧