本文主要是介绍自己实现的atof()和atoi()代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本文全文摘自:http://www.cppblog.com/cxiaojia/archive/2012/02/24/166436.html,非常感谢
自己在VC环境下,编译,调试通过,将结果显示给大家:
#include "stdafx.h"
//函数名:myatof
//功能:把字符串转化成double浮点型
//名字来源:my array to floating point numbers
//函数说明:接收一个字符串判断第一个字符的符号,没有符号默认为正值,然后对剩余字符串进行转换,//遇到\0结束,最后返回一个double
double myatof(const char* sptr)
{
double temp=10;
bool ispnum=true;
double ans=0;
if(*sptr=='-')//判断是否是负数
{
ispnum=false;
sptr++;
}
else if(*sptr=='+')//判断是否为正数
{
sptr++;
}
while(*sptr!='\0')//寻找小数点之前的数
{
if(*sptr=='.'){ sptr++;break;}
ans=ans*10+(*sptr-'0');
sptr++;
}
while(*sptr!='\0')//寻找小数点之后的数
{
ans=ans+(*sptr-'0')/temp;
temp*=10;
sptr++;
}
if(ispnum) return ans;
else return ans*(-1);
}
//函数名:myatoi
//功能:把字符串转化成int整型
//名字来源:my array to integer
//函数说明:接收一个字符串判断第一个字符的符号,没有符号默认为正值,然后对剩余字符串进行转换,//遇到\0结束,最后返回一个int
int myatoi(const char* sptr)
{
bool ispnum=true;
int ans=0;
if(*sptr=='-')//判断是否是负数
{
ispnum=false;
sptr++;
}
else if(*sptr=='+')//判断是否为正数
{
sptr++;
}
while(*sptr!='\0')//类型转化
{
ans=ans*10+(*sptr-'0');
sptr++;
}
if(ispnum) return ans;
else return ans*(-1);
}
int main(int argc, char* argv[])
{ char str[15]={"1.233456789"};
char strint[10]={"-1245"};
double i=myatof(str); //字符串转换为浮点型
int m=myatoi(strint); //字符串转换为整型
printf("浮点型字符串%s,数字%3.9f!\n",str,i);
printf("整数型字符串%s,数字%d!\n",strint,m);
return 0;
}
运行后如图所示:
这篇关于自己实现的atof()和atoi()代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!