自己实现的atof()和atoi()代码 (转)
http://www.cppblog.com/cxiaojia/archive/2012/02/24/166436.html
(添加了判空處理)
?
//函數(shù)名:myatof
//功能:把字符串轉(zhuǎn)化成double浮點(diǎn)型
//名字來(lái)源:my?array?to?floating?point?numbers??
//函數(shù)說(shuō)明:接收一個(gè)字符串判斷第一個(gè)字符的符號(hào),沒(méi)有符號(hào)默認(rèn)為正值,然后對(duì)剩余字符串進(jìn)行轉(zhuǎn)換,//遇到\0結(jié)束,最后返回一個(gè)double
double?myatof(const?char*?sptr)
{
????double?temp=10;
????bool?ispnum=true;
????double?ans=0;
??? if(sptr==NULL)
????????? return 0.0;
????if(*sptr=='-')//判斷是否是負(fù)數(shù)
????{
????????ispnum=false;
????????sptr++;
????}
????else?if(*sptr=='+')//判斷是否為正數(shù)
????{
????????sptr++;
????}
????while(*sptr!='\0')//尋找小數(shù)點(diǎn)之前的數(shù)
????{
????????if(*sptr=='.'){?sptr++;break;}
????????ans=ans*10+(*sptr-'0');
????????sptr++;
????}
????while(*sptr!='\0')//尋找小數(shù)點(diǎn)之后的數(shù)
????{
????????ans=ans+(*sptr-'0')/temp;
????????temp*=10;
????????sptr++;
????}
????if(ispnum)?return?ans;
????else?return?ans*(-1);
}
//函數(shù)名:myatoi
//功能:把字符串轉(zhuǎn)化成int整型
//名字來(lái)源:my?array?to?integer??
//函數(shù)說(shuō)明:接收一個(gè)字符串判斷第一個(gè)字符的符號(hào),沒(méi)有符號(hào)默認(rèn)為正值,然后對(duì)剩余字符串進(jìn)行轉(zhuǎn)換,//遇到\0結(jié)束,最后返回一個(gè)int
int?myatoi(const?char*?sptr)
{
????bool?ispnum=true;
????int?ans=0;
??? if(sptr==NULL)
????????? return -1;
????if(*sptr=='-')//判斷是否是負(fù)數(shù)
????{
????????ispnum=false;
????????sptr++;
????}
????else?if(*sptr=='+')//判斷是否為正數(shù)
????{
????????sptr++;
????}
????while(*sptr!='\0')//類(lèi)型轉(zhuǎn)化
????{
????????ans=ans*10+(*sptr-'0');
????????sptr++;
????}
????if(ispnum)?return?ans;
????else?return?ans*(-1);
}
轉(zhuǎn)載于:https://www.cnblogs.com/wb118115/archive/2012/11/08/2761730.html
總結(jié)
以上是生活随笔為你收集整理的自己实现的atof()和atoi()代码 (转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 分组中查询不符合条件的组
- 下一篇: VS CRT C标准库函数strrev解