8

I'm reading from a text file which contains:

Mary 55334422 24.90 56.6 45.68

and am reading it in:

....char name[20]; int num; double worked; double rate; double total;....

fscanf(fp, "%s %d %f %f %f\n", name, &num, &worked, &rate, &total);

I'm getting the name and the integer fine, but the floating point numbers come out something like -9522999990000000000000000000.00

Am I doing something wrong here?

rach
  • 701
  • 6
  • 16
  • 20

3 Answers3

15

You need to use the format for a double: %lf, rather than that for a float %f... or change to floats instead of doubles.

martin clayton
  • 76,436
  • 32
  • 213
  • 198
5

Try lf instead of f to parse into double variables:

fscanf(fp, "%s %d %lf %lf %lf\n", name, &num, &worked, &rate, &total);
Pablo Santa Cruz
  • 176,835
  • 32
  • 241
  • 292
1

Change your doubles to floats, or change your format to %lf

Erik
  • 88,732
  • 13
  • 198
  • 189