• C

atof() and sscanf() do not work for me

I'm trying to convert a string into a double.  I've tried both the atof() and sscanf() functions with no success.  What am I doing wrong?

I am running on a Solaris 2.8 UNIX box.

Here is the code:

#include <stdio.h>
#include <string.h>
main() {
  char numstring[] = "12.34";
  double d;
  d = atof(numstring);
  printf("String = %s\n",numstring);
  printf("Double = %f\n",d);
}

Here are the results:

String = 12.34
Double = -4264242.000000

Playing around with the format string in the second printf statement seems to change the answer, but not to 12.34.

Using sscanf() instead of atof() yields different incorrect results.

Any ideas?
LVL 2
dastrwAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
ozoConnect With a Mentor Commented:
#include <stdlib.h>
0
 
SteveGTRCommented:
You should be using the long float formater for the seconds printf:

#include <stdio.h>
#include <string.h>
main() {
 char numstring[] = "12.34";
 double d;
 d = atof(numstring);
 printf("String = %s\n",numstring);
 printf("Double = %lf\n",d);  // %f should be %lf
}

Good Luck,
Steve
0
 
dastrwAuthor Commented:
Thanks.  I must have zoned and thought stdio.h was the same as stdlib.h!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.