主要考虑,字符串中是否有非法字符,字符串是否有溢出控制

#include<stdio.h>

int myatoi(const char *str){
int sight=,ret=,i=;
if(str[i]==' ')i++;
int max=(<<)-;
if(str[i]=='+'||str[i]=='-'){
if(str[i]=='-')sight=-;
i++;
} for(i=;str[i]>=''&&str[i]<='';i++){
ret*=;
ret+=str[i]-'';
if(ret>max){//溢出控制
ret=max;break;
}
}
return ret*sight;
} int main(){
printf("%d\n",myatoi("214748.3649"));
}

后来仔细想想发现自己的代码弱爆了!

改变如下:

#include<stdio.h>
#include<iostream>
using namespace std; int myatoi(char *str){
if(NULL == str)return ;//处理空指针,加强程序的鲁棒性
int sight=,ret=,i=; while(str[i]==' ')i++;//处理字符串开始的空格 if(str[i]=='+'||str[i]=='-'){ //处理正负号
if(str[i]=='-')sight=-;
i++;
} for(;str[i]>=''&&str[i]<='';i++){
ret*=;
ret+=str[i]-'';
if(ret<){//溢出控制
return ;
}
} return ret*sight;
} int main(){
char *s=NULL;
printf("%d\n",myatoi(s));
printf("%d\n",myatoi(" -123189267q 2e.1"));
getchar();
return ;
}

最新文章

  1. Good Bye 2016 - D
  2. STL 阅读(浅析)
  3. Postgres Plus Advanced Server installation
  4. B2C电子商务网站技术框架
  5. linux驱动之I2C
  6. 【原创】用python实现shell的tail操作
  7. C#随机函数random()典型用法集锦
  8. 【Latex】怎么写中文?
  9. CSS 各类 块级元素 行级元素 水平 垂直 居中问题
  10. 客户调查(client)
  11. 爬取西刺ip代理池
  12. 【ASP.NET Core】运行原理之启动WebHost
  13. 201421123042 《Java程序设计》第10周学习总结
  14. servlet之session设置
  15. BZOJ_2460_[BeiJing2011]元素_线性基
  16. ubantu中执行docker免sudo方法
  17. ISP PIPLINE (六) AWB
  18. MySQL中varchar最大长度是多少?
  19. 深刻理解Python中的元类(metaclass)以及元类实现单例模式
  20. xcode编译失败

热门文章

  1. jq对页面元素进行排序
  2. zabbix selinux audit2allow 问题
  3. MML命令_华为TD-LTE后台常用MML命令操作
  4. ckeditor5富文本编辑器在vue中的使用
  5. CSS样式--移动划过超链接鼠标变手型详解
  6. 快速切题 poj 2485 Highways prim算法+堆 不完全优化 难度:0
  7. golang版并发爬虫
  8. log4cpp单例类封装
  9. 迁移到阿里云后,NTKO控件报存word 报文件存取错误,请检查网络传输。
  10. 2017-2018-2 20165202 实验三《敏捷开发与XP实践》实验报告