This is the mail archive of the
cygwin@sourceware.cygnus.com
mailing list for the Cygwin project.
Re: scanf "%n" format specifier is not supported
- To: gnu-win32 at cygnus dot com
- Subject: Re: scanf "%n" format specifier is not supported
- From: Benjamin Riefenstahl <benny at crocodial dot de>
- Date: Tue, 23 Jun 1998 11:54:30 +0200
- Organization: Crocodial Communications EntwicklungsGmbH
- References: <Pine.GSO.3.96.980622162749.14664D-100000@sigma>
Hi Alexander,
Alexander Chernov wrote:
> ...For example, the following piece of code
> left variable n value as 0 instead of 2. ...
>
> #include <stdio.h>
> #include <string.h>
>
> int
> main()
> {
> int v = 0, n = 0, r = 0;
>
> r = sscanf("32", "%d %n", &v, &n);
> printf("v = %d\nn = %d\nr = %d\n", v, n, d);
> return 0;
> }
The problem is that the scanner gives up as it doesn't find the space
that your format string specifies. The %n is not processed, and so n is
left unchanged. Try this:
#include <stdio.h>
#include <string.h>
int
main()
{
int v = 0, n = 0, r = 0;
r = sscanf("32", "%d %n", &v, &n);
printf("v = %d\nn = %d\nr = %d\n", v, n, r);
r = sscanf("32", "%d%n", &v, &n);
printf("v = %d\nn = %d\nr = %d\n", v, n, r);
return 0;
}
Should output
v = 32
n = 0
r = 1
v = 32
n = 2
r = 1
so long, benny
======================================
Benjamin Riefenstahl (benny@crocodial.de)
Crocodial Communications EntwicklungsGmbH
Ruhrstraße 61, D-22761 Hamburg, Germany
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".