Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

converting string to a double variable in C

I have written the following code. It should convert a string like "88" to double value 88 and print it

void convertType(char* value)
{
   int i = 0;
   char ch;
   double ret = 0;
   while((ch = value[i])!= '\0')
   {
      ret = ret*10 + (ch - '0');
      i++;
   }
   printf("%d",ret); //or %lf..
}

// input string :88

But it always prints 0. But when I change type of ret to int, it works fine. When the type is float or double, it prints 0. So why am I getting these ambiguous results?

like image 824
Jinu Joseph Daniel Avatar asked Apr 09 '12 15:04

Jinu Joseph Daniel


People also ask

Can char convert to double?

We can convert a char array to double by using the std::atof() function.

What is strtod in C?

The strtod() is a builtin function in C and C++ STL which interprets the contents of the string as a floating point number and return its value as a double. It sets a pointer to point to the first character after the last valid character of the string, only if there is any, otherwise it sets the pointer to null.


1 Answers

Use sscanf (header stdio.h or cstdio in C++):

char str[] = "12345.56";
double d;

sscanf(str, "%lf", &d);

printf("%lf", d);
like image 141
Hauleth Avatar answered Sep 29 '22 16:09

Hauleth