This is the mail archive of the cygwin mailing list for the Cygwin 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]

Re: 1.5.24: gcc / libc problem with sscanf


Matteo Corti wrote:

> I get strange results when using the %zi flag for the sscanf and fscanf
> functions.
> 
> The following code scans a line and parses an integer and a size_t value.
> 
>   size_t var_size_t = 0;
>   int    var_int    = 0;
> 
>   char * string = "2 10";
> 
>   sscanf(string, "%zi %i\n", &var_size_t, &var_int);
> 
>   printf("size_t = %zi\n", var_size_t);
>   printf("int    = %i\n",  var_int);
> 
> The code when compiled and run generates 2 followed by 0 instead of the
> correct 2 and 10 (that I get on linux and mac os x).

Yes, unfortunately newlib does not support the 'z' size flag for the
scanf family of functions.  It's got nothing to do with gcc or Cygwin
directly, we just inherit whatever functionality newlib has, as that's
where all the stdio implementation comes from.  

>From what I can tell this is a C99 item that wasn't in POSIX/SUSv3/ANSI
C/C90, so it's no surprise that it's not implemented as widely.  I think
Eric Blake has been recently working on getting more C99 printf/scanf
specifiers implemented in newlib, so there's a chance this is on his
TODO list, but no guarantees.

Brian

--
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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]