Mail Archives: cygwin/1998/06/23/10:11:40
Alexander Chernov <cher AT ispras DOT ru> wrote:
>This looks like a missing feature: "%n" format specifier in sscanf
>is not supported. For example, the following piece of code
>left variable n value as 0 instead of 2. According to my textbooks
>ANSI C specifies %n specifier.
>
>#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);
should be: printf("v = %d\nn = %d\nr = %d\n", v, n, r);
> return 0;
>}
Aside from the typo above the reason the code doesn't work is that sscanf
never gets as far as the %n. It stops when it reaches the end of the string
"32" while looking for a whitespace to match the space between %d and %n.
Try adding a space to the end of "32" like this:
r = sscanf("32 ", "%d %n", &v, &n);
And, with Mingw32 at least, you'll get:
v = 32
n = 3
r = 1
Alternatively you could change the format string to "%d%n" and n will be set
to 2.
Hope this helps,
Colin.
-- Colin Peters - colin at fu.is.saga-u.ac.jp
-- Saga Univ. Dept. of Information Science
-- http://www.geocities.com/Tokyo/Towers/6162/index.html
-- http://www.fu.is.saga-u.ac.jp/~colin/index.html
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request AT cygnus DOT com" with one line of text: "help".
- Raw text -