Atof不能在C中工​​作,没有atof也不能在调试中工作

时间:2017-09-17 14:05:36

标签: c debugging atoi atof coocox

我遇到了Atof功能问题。我试图将字符串转换为浮点数,但是当我在调试部分尝试使用Coocox软件时,它没有给出任何错误,输出没有显示任何内容。我尝试了两个功能Atoi和Atof。当我使用Atoi时没有输出。当我使用Atof时程序开始重启。我把atd的stdlib.h定义放在这里。但是这里的浮点值是atoff。我在C语言的Dev C ++中尝试了相同的代码,它运行得很好。我使用的其他东西没有工作Atof但这次又重新启动程序。这适用于Dev C.但不适用于Coocox。我该如何解决这个问题?只有差异!它有什么关系?我使用了stdlib.h,编译时没有错误!

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main ()
{
    float c;
    int b;

    char *array[1] = {"52.43525"};

    b=(atoi(array[0])/100);
    c=((atof(array[0]))/100.0)*100.0;
    c/=60;
    c+=b;

    printf ("%f\n", c);

    return 0;
}

-----stdlib.h----
double  _EXFUN(atof,(const char *__nptr));
#if __MISC_VISIBLE
float   _EXFUN(atoff,(const char *__nptr));
#endif
int _EXFUN(atoi,(const char *__nptr));
int _EXFUN(_atoi_r,(struct _reent *, const char *__nptr));
long    _EXFUN(atol,(const char *__nptr));
long    _EXFUN(_atol_r,(struct _reent *, const char *__nptr));
------------------------------------

1 个答案:

答案 0 :(得分:1)

在更正所有编译器警告后,这是生成的代码:

注意:由于未使用数组功能,我将其更改为简单指针。这在输出中没有区别。

#include <stdio.h>   // printf()
//#include <string.h> -- contents not used
#include <stdlib.h>  // atoi(), atof()

int main ()
{
    float c;
    int b;

    char *array = {"52.43525"};

    b =  atoi(array);
    c =  ( (float)( atof(array) ) / 100.0f ) * 100.0f;
    c /= 60.0f;
    c += (float)b;

    printf ("%f\n", c);

    return 0;
}

运行该程序导致:

52.873920

因此,如果编译器未找到atof(),则编译器存在问题。