bug-glibc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: scanf bug


From: Vadim Zhukovsky
Subject: Re: scanf bug
Date: Sun, 17 Jun 2001 14:49:21 +0300

This is the program and the result:

#include <stdio.h>
#include <stdlib.h>

const char *oct_long_long = "01000000000000000000000";

void main()
{
  long long ll1, ll2;
  sscanf(oct_long_long, "%Lo", &ll1);
  sscanf(oct_long_long, "%Li", &ll2);
  printf("%%Lo: %Ld, %%Li: %Ld\n", ll1, ll2);
}
----------------------------------------------------------------
%Lo: -9223372036854775808, %Li: 9223372036854775807

The Lo specifier produces the right result, Li - wrong.
01000000000000000000000 = LLONG_MIN
The same thing happens when scanning 
"0777777777777777777777" = LLONG_MAX
or "01777777777777777777777" = ULLONG_MAX

Test was performed on glibc - 2.0.7 and 2.1.92

Best wishes, 

Vadim Zhukovsky


----- Original Message ----- 
From: "Andreas Jaeger" <address@hidden>
To: "Vadim Zhukovsky" <address@hidden>
Cc: <address@hidden>
Sent: Friday, June 15, 2001 11:10 PM
Subject: Re: scanf bug


"Vadim Zhukovsky" <address@hidden> writes:

> long long ll;
> sscanf("01000000000000000000000", "%Li", &ll);
> sscanf("0777777777777777777777", "%Li", &ll);
> ll is not what expected to be

So what do you expect as answer - and what do you get?

Andreas
-- 
 Andreas Jaeger
  SuSE Labs address@hidden
   private address@hidden
    http://www.suse.de/~aj





reply via email to

[Prev in Thread] Current Thread [Next in Thread]