博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原创:实现atoi函数
阅读量:5273 次
发布时间:2019-06-14

本文共 1419 字,大约阅读时间需要 4 分钟。

#include 
#include
#include
int my_atoi(char *str){ if(NULL == str) { printf("argc is null\n"); return -1; } while(' ' == *str) str++; int flag = 1; if('-' == *str) { flag = -1; str++; } if('+' == *str) { str++; } unsigned int sum = 0; while(*str) { if(*str >= '0' && *str <= '9') { int tmp = *str - '0'; sum *= 10; sum += tmp; //此处判断溢出的目的是避免sum在计算过程中溢出 if((1 == flag) && (sum > INT_MAX)) { printf("int 正数溢出\n"); return -1; } //计算最小int的绝对值,注意要使用unsigned int否则会溢出 unsigned int absIntMin = (unsigned int)INT_MAX + 1; if((-1 == flag) && (sum > absIntMin)) { printf("int 负数溢出\n"); return -1; } } else { printf("str (%s) exists illegal character\n", str); return -1; } str++; } return flag * sum;}

测试代码

#include 
#include
extern int my_atoi(char *str);int main(int argc, char *argv[]){ char a[20] = {
'\0'}; while(1) { scanf("%s", a); printf("count = %d\n", my_atoi(a)); } return 0;}

 

转载于:https://www.cnblogs.com/penghuster/p/6403899.html

你可能感兴趣的文章
Jenkins+ProGet+Windows Batch搭建全自动的内部包(NuGet)打包和推送及管理平台
查看>>
php上传文件及头像预览
查看>>
大四java实习生的一些经历
查看>>
线程池的概念
查看>>
Oracle_Statspack性能诊断工具
查看>>
转获取sql维护的表关系
查看>>
Java 序列化
查看>>
Java 时间处理实例
查看>>
Java 多线程编程
查看>>
Java 数组实例
查看>>
mysql启动过程
查看>>
2017前端面试题总结
查看>>
Http GetPost网络请求
查看>>
SWIFT国际资金清算系统
查看>>
Sping注解:注解和含义
查看>>
站立会议第四天
查看>>
如何快速掌握一门技术
查看>>
利用AMPScript获取Uber用户数据的访问权限
查看>>
vagrant 同时设置多个同步目录
查看>>
python接口自动化28-requests-html爬虫框架
查看>>