atoi函数的实现——面试
2024-08-31 02:46:57
主要考虑,字符串中是否有非法字符,字符串是否有溢出控制
#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 ;
}
最新文章
- Good Bye 2016 - D
- STL 阅读(浅析)
- Postgres Plus Advanced Server installation
- B2C电子商务网站技术框架
- linux驱动之I2C
- 【原创】用python实现shell的tail操作
- C#随机函数random()典型用法集锦
- 【Latex】怎么写中文?
- CSS 各类 块级元素 行级元素 水平 垂直 居中问题
- 客户调查(client)
- 爬取西刺ip代理池
- 【ASP.NET Core】运行原理之启动WebHost
- 201421123042 《Java程序设计》第10周学习总结
- servlet之session设置
- BZOJ_2460_[BeiJing2011]元素_线性基
- ubantu中执行docker免sudo方法
- ISP PIPLINE (六) AWB
- MySQL中varchar最大长度是多少?
- 深刻理解Python中的元类(metaclass)以及元类实现单例模式
- xcode编译失败