字符数组到浮点数转换

我正在尝试将下面的代码的输出缓冲区(字符数组)转换为浮点格式以供进一步计算。 有谁能告诉我该怎么做。

#include "usbtmc.h" #include <errno.h> #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <stdlib.h> #include <getopt.h> #include <inttypes.h> #include <sys/types.h> #include <pthread.h> int main() { int myfile; char buffer[4000]; int actual; myfile=open("/dev/usbtmc1",O_RDWR); if(myfile>0) { system("echo MEAS:VOLT:AC?>/dev/usbtmc1"); actual=read(myfile,buffer,4000); buffer[actual] = 0; printf("Response = \n %s\n",buffer); close(myfile); } return 0; } 

此代码的示例输出是

回应= + 1.29273072E-04

你可能有两种方法:

  1. 使用双重atof (const char * str)

     float f; f = (float)atof(buffer); printf("%f",f); // here you can use f 
  2. 使用int sscanf (const char * s,const char *格式,…)

     float f; sscanf(buffer,"%f",&f); printf("%f",f); // here you can use f