Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

fscanf input with floats

Tags:

c

scanf

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?

like image 762
rach Avatar asked Mar 02 '11 00:03

rach


3 Answers

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

like image 188
martin clayton Avatar answered Oct 17 '22 13:10

martin clayton


Try lf instead of f to parse into double variables:

fscanf(fp, "%s %d %lf %lf %lf\n", name, &num, &worked, &rate, &total);
like image 41
Pablo Santa Cruz Avatar answered Oct 17 '22 13:10

Pablo Santa Cruz


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

like image 1
Erik Avatar answered Oct 17 '22 14:10

Erik