This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
mjn3@codepoet.org (Manuel Novoa III) writes:
> Hello,
>
> Subject line and comments in attached code pretty much say it all.
No, it doesn't ;-)
> Manuel
>
>
> /* Illustration of glibc scanf accepting invalid floating point strings.
> Annotated output for glibc -- cvs Sep 10 14:37 CDT
>
> glibc's scanf behavior conflits with that specified in Example 3 for
> fscanf in the ANSI/ISO C99 standard.
>
> Based on additional tests run, it appears that scanf is failing to
> check for the existence of digits in some subparts of floating point
> and integer strings being scanned.
>
> ************* OUTPUT *********************************************************
>
> count = 3
> Error! count should be 0, as per Example 3 for fscanf in the ANSI/ISO C99 spec.
The example does not mention the input format!
> quant = 100.000000
> units = "rgs"
> item = "energy"
>
> Running some more tests which should all return count = 0.
> testing "1.Ez"... count = 2 float = 1.000000 trailing string = "z"
> testing "0x.pz"... count = 2 float = 0.000000 trailing string = "z"
> testing "0x.pz"... count = 2 int = 0 trailing string = ".pz"
You really need the space here.
>
> */
>
> #include <stdio.h>
> #include <stdlib.h>
>
> int main(void)
> {
> int count;
> float quant;
> char units[21], item[21];
>
> count = sscanf("100ergs of energy", "%f%20s of %20s", &quant, units, item);
100 ergs of energy...
100e is the initial suffix for a floating point number which cannot be
parsed correctly, so your input is wrong,
Andreas
--
Andreas Jaeger, aj@suse.de, http://www.suse.de/~aj
SuSE Linux AG, Deutschherrnstr. 15-19, 90429 Nürnberg, Germany
GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126
Attachment:
pgp00000.pgp
Description: PGP signature
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |