Subject: Re: scanf "%n" format specifier is not supported
From: [email-masked] (Benjamin Riefenstahl)

23 Jun 1998 17:27:17 -0700
Message-ID: <[email-masked]>
References: <Pine.GSO.3.96.980622162749.14664D-100000@sigma>
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
To: [email-masked]

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 ([email-masked])
Crocodial Communications EntwicklungsGmbH
Ruhrstraße 61, D-22761 Hamburg, Germany
-
For help on using this list (especially unsubscribing), send a message to
"[email-masked]" with one line of text: "help".