character array to floating point conversion

c, type-conversion, unix

Solution

You may have two ways:

using double `atof`(const char* str)

float f;
f = (float)atof(buffer);
printf("%f",f); // here you can use f

using int `sscanf`( const char * s, const char * format, ...)

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

Problem

I am trying to convert the output buffer(character array) of the code below to floating point format for further calculations. Can anybody tell me how to do it. ``` #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; } ``` The sample output for this code is Response = +1.29273072E-04

Original source