自己实现atoi系列
2012-04-08 15:36
246 查看
atoi系列是字符跟数字之间转换常用的函数,其实自己实现也是挺快的,这里写一种带格式检测的atoi函数。
函数说明
atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('/0')才结束转换,并将结果返回。
返回值
返回转换后的整型数。
#include<stdio.h>
int my_atoi(const char * str)
{
int res=0,begin=0,i;
bool minus=false;
while(*str!='/0')
{
if(begin==0&&(('0'<*str&&*str<'9')|| *str=='-') ) //从第一个数字或者'-'号开始
{
begin=1;
if(*str == '-')
{
minus=true;
str++;
}
}
else if( begin==1&&(*str<'0'||*str>'9') ) //遇到第一个非数字,退出
break;
if(begin==1)
res=res*10+(*str-'0'); //计算
str++;
}
return minus? -res : res;
}
int main()
{
int i=0;
char s1[]="-1245781";
char s2[]="35678";
char s3[]="ab568678";
char s4[]="bn-35878";
char s5[]="bh-836583mk";
i=my_atoi(s1) ;
printf("i1 is %d/n",i);
i=my_atoi(s2) ;
printf("i2 is %d/n",i);
i=my_atoi(s3) ;
printf("i3 is %d/n",i);
i=my_atoi(s4) ;
printf("i4 is %d/n",i);
i=my_atoi(s5) ;
printf("i5 is %d/n",i);
return 0;
}
函数说明
atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('/0')才结束转换,并将结果返回。
返回值
返回转换后的整型数。
#include<stdio.h>
int my_atoi(const char * str)
{
int res=0,begin=0,i;
bool minus=false;
while(*str!='/0')
{
if(begin==0&&(('0'<*str&&*str<'9')|| *str=='-') ) //从第一个数字或者'-'号开始
{
begin=1;
if(*str == '-')
{
minus=true;
str++;
}
}
else if( begin==1&&(*str<'0'||*str>'9') ) //遇到第一个非数字,退出
break;
if(begin==1)
res=res*10+(*str-'0'); //计算
str++;
}
return minus? -res : res;
}
int main()
{
int i=0;
char s1[]="-1245781";
char s2[]="35678";
char s3[]="ab568678";
char s4[]="bn-35878";
char s5[]="bh-836583mk";
i=my_atoi(s1) ;
printf("i1 is %d/n",i);
i=my_atoi(s2) ;
printf("i2 is %d/n",i);
i=my_atoi(s3) ;
printf("i3 is %d/n",i);
i=my_atoi(s4) ;
printf("i4 is %d/n",i);
i=my_atoi(s5) ;
printf("i5 is %d/n",i);
return 0;
}
相关文章推荐
- 自己实现atoi系列(atoi函数)
- 自己实现atoi系列
- 自己动手系列——实现一个简单的LinkedList
- Android开发系列(十八):自己定义控件样式在drawable目录下的XML实现
- C#基础系列:实现自己的ORM(反射以及Attribute在ORM中的应用)
- [置顶] 网站浏览统计功能的简单实现-- vb2005xu自己动手系列(2)
- C#基础系列3:实现自己的ORM…
- Caffe实战系列:实现自己Caffe网络层
- Caffe实战系列:实现自己Caffe网络层
- C++ Studio (二) ----- atoi()函数的实现 (自己编写功能)
- 自己动手系列——实现一个简单的LinkedLis
- C#基础系列:实现自己的ORM(构造我自己的ORM)
- C#基础系列:实现自己的ORM(MiniORM的测试代码)
- 一步步实现自己的框架系列(三):客户端服务端通信的实现
- LinqProvider系列(三)如何实现自己的Linq Provider?
- atoi 函数自己写代码实现
- Android自己定义控件系列一:Android怎样实现老版优酷client三级环形菜单
- Windows API入门系列之六 -自己实现MessageBox
- Python之虚拟机操作:利用VIX二次开发,实现自己的pyvix(系列一)成果展示和python实例
- 一步步实现自己的框架系列(一):初步架构功能设计