我想将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;
}
}
答案 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