Possible sscanf %f conversion glitch

KHMan keinhong@gmail.com
Wed Jan 28 16:03:00 GMT 2009


Hi all,

Someone ran into a problem with sscanf %f conversion on the Lout 
list. It appeared that one specific case fails. I am running 
cygwin-1.5.25-15. Test cases:

#include <stdio.h>
int main()
{
     char *foo1 = "10i";
     char *foo2 = "0i";
     char *foo3 = "0.0i";
     char *foo4 = "1.0i";
     char *foo5 = "0.1i";
     float f;
     printf("%d ", sscanf(foo1, "%f", &f)); printf("%f\n", f);
     printf("%d ", sscanf(foo2, "%f", &f)); printf("%f\n", f);
     printf("%d ", sscanf(foo3, "%f", &f)); printf("%f\n", f);
     printf("%d ", sscanf(foo4, "%f", &f)); printf("%f\n", f);
     printf("%d ", sscanf(foo5, "%f", &f)); printf("%f\n", f);
}

As the scanf man page specifies, 'i' is not supposed to be 
converted, only the number part is supposed to be recognized.

On Cygwin:
$ ./test
1 10.000000
0 10.000000
1 0.000000
1 1.000000
1 0.100000

On Linux (Ubuntu 8.04) and MinGW, the second case succeeds, the 
result being the same as the third case. I've done some googling, 
and haven't found anything related to this behaviour.

-- 
Cheers,
Kein-Hong Man (esq.)
Kuala Lumpur, Malaysia


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list