字符数组到浮点转换

Vai*_*yal 2 c unix type-conversion

我试图将下面代码的输出缓冲区(字符数组)转换为浮点格式,以便进一步计算.任何人都可以告诉我该怎么做.

#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;
}
Run Code Online (Sandbox Code Playgroud)

此代码的示例输出是

响应= + 1.29273072E-04

Gri*_*han 5

你可能有两种方式:

  1. 使用double atof(const char*str)

    float f;
    f = (float)atof(buffer);
    printf("%f",f); // here you can use f
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用int sscanf(const char*s,const char*format,...)

    float f;
    sscanf(buffer,"%f",&f);
    printf("%f",f); // here you can use f
    
    Run Code Online (Sandbox Code Playgroud)