首页 > 编程知识 正文

atoi函数用法,c语言atof函数的用法

时间:2023-05-05 20:16:01 阅读:239780 作者:3556

/* atof函数实现字符串向double数据的转换, */
#include <stdio.h> double myatof(const char *str); int main()
{
    //char str[20] = "sd sdf32.47e+2df";
    char str[20] = "sd sdf32.47e2df";     double result = 0.0;     printf("the str is %sn",str);     result = myatof(str);  printf("the result is %lfn",result);     return 0;
} double myatof(const char *str)
{
    char flag = 0;  //表示正数
 double res = 0.0;
 double d = 10.0;
 int e = 0;
 while(*str != '')
 {
        if( !(*str >= '0' && *str <= '9'))  //找到字符串中的第一个数字
  {
       str++;
    continue;
  }
  if(*(str-1) == '-')
  {
      flag = 1;  //表示是一个负数
  }
  
  while(*str >= '0' && *str <= '9')
  {
       res = res *10.0 + (*str - '0');
    str++;
  }
  if(*str == '.')
  {
      str++;
  }
        while(*str >= '0' && *str <= '9')
  {
       res = res + (*str - '0')/d;
    d = d*10;
    str++;
  }
  if(*str == 'e' || *str == 'E')
  {
      str++;
   if(*str == '+')
   {
       str++;
    while(*str >= '0' && *str <= '9')
    {
        e = e*10 + (*str - '0');
     str++;
    }
    while(e>0)
    {
        res = res*10;
     e--;
    }
   }
   if(*str == '-')
   {
       str++;
    while(*str >= '0' && *str <= '9')
    {
        e = e*10 + (*str - '0');
     str++;
    }
    while(e>0)
    {
        res = res/10;
     e--;
    }
   }
            if(*str >= '0' && *str <= '9')
   {
    while(*str >= '0' && *str <= '9')
    {
        e = e*10 + (*str - '0');
     str++;
    }
    while(e>0)
    {
        res = res*10;
     e--;
    }
   }
  }   return res*(flag?-1:1);
       
 }
}



版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。