Это простая проблема, но я ее не вижу:
char *s = "f 8.649292" ; double d ; sscanf( s, "f %f", &d ) ; printf( "d is %f\n", d ) ;
Почему d не содержит двойное значение 8.649292?
d
8.649292
Ой, подождите, неважно. d должно быть float.
float
И чтобы это сработало, вы можете использовать %lf для двойного
%lf
char *s = "f 8.649292 " ; double d ; sscanf( s, "f %lf", &d ) ; printf( "d is %lf\n", d ) ;