首页 > 试题广场 >

使用字符分类函数实现atoi()函数。

[问答题]

使用字符分类函数实现atoi()函数。

推荐
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
double myatof(char *p);
int main(void)
{
 char a[30]={0};
 while(a[0] != 'q')
 {
 puts("input a double without +-e:");
 gets(a);
 printf("atof: %.5lf\n",atof(a));
 printf("myatof: %.5lf\n",myatof(a)); 
 printf("difference:%.5lf\n", atof(a) -myatof(a)); 
 puts("input any char except q to go on.");
 gets(a);
 }
 puts("Quit.");
 return 0;
}
double myatof(char *p)//将字符串转换为浮点型,暂时只限小数点格式(如:342.678)
{
 double n=0;
 int i=-1;
 while( 1 )
 {
 if (isdigit(*p)) //如果是数字
 {
 n = n*10 + (*p) -'0';
 if(i != -1) i++; //小数位数i计数
 }
 else if ( *p == '.' && i == -1) //如果是第一个小数点
 i=0;  //开启小数位数i计数
 else
 break;
 p++;
 }
 for(; i>0; i--)  //根据小数位数i,将n取为原来的(10^i)分之一
 n /= 10;
 return n;
}

发表于 2018-05-05 21:53:41 回复(0)