This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Possible sscanf %f conversion glitch
- From: KHMan <keinhong at gmail dot com>
- To: cygwin at cygwin dot com
- Date: Wed, 28 Jan 2009 23:19:07 +0800
- Subject: Possible sscanf %f conversion glitch
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/