C:将char转换为float

时间:2019-03-11 14:20:14

标签: c

我想将C语言的char转换为float。 但是atof()和strtof()无法正常工作。

这是一些代码,也许有人可以帮助我! 困难在于我的电话号码中包含e-02

char temp = "6.345e-02"; // the original value is read from a file
float result;

result = atof(temp); //not working correct
result = strtof(temp, NULL); //also not working correct

编辑:新代码

FILE *file = fopen("file.txt", "r");
char c;
char *temp[11];
float result;
while((c=fgetc(file))!=EOF){
  if(c=='\t'){
    result = atof(temp); //here is the converting problem
    printf("%.6f\n", result);
  } else {
    temp[i] = c;
  }
}

2 个答案:

答案 0 :(得分:1)

您将temp声明为一个字符,但不是。 这是一个字符数组,因此必须声明为char *temp

答案 1 :(得分:0)

我在IDEOne上运行了此程序,发现如果我不#include <stdlib.h>,则会得到错误的结果

#include <stdio.h>
//#include <stdlib.h>            // <== This line is crucial

int main(void) {
    char* temp   = "6.345e-2";
    float result = atof(temp);

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

    return 0;
}

使用stdlib.h:

Success #stdin #stdout 0s 9424KB
0.063450

没有stdlib.h

Success #stdin #stdout 0s 9424KB
0.000000