Subject: RE: scanf "%n" format specifier is not supported
From: [email-masked] (Colin Peters)

24 Jun 1998 09:57:52 -0700
Message-ID: <[email-masked]>
Mime-Version: 1.0
Content-Type: text/plain;
	charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit
To: "Alexander Chernov" <[email-masked]>
Cc: "GNU-Win32" <[email-masked]>

Alexander Chernov <[email-masked]> wrote:

>On Tue, 23 Jun 1998, Colin Peters wrote:
>> 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);
>
>Ok, but atleast on Linux, HPUX and Solaris sscanf works as described
>above,
>ie "r = sscanf("32", "%d %n", &v, &n);" sets r to 1, v to 32 and n to 2.
>I looked at my C book, and It says nothing on this topic, though...

Actually, on closer reading of the appendix in my copy of K&R it appears
that you (and Linux, etc.) are right. Blanks or tabs in the format string
are supposed to be *ignored*. Of course this is a pretty odd case. I suppose
the people at MS (and Cygnus, since they seem to have the same problem)
thought the way I did, that white space in the format string is supposed to
match white space in the input.

Of course all this is based on K&R being correct (it is the 2nd, ANSI C,
edition). I'm not sure what the standard itself says.

In any case it's probably safer to do it some other way, as you said.

Apologies for the waste of bandwidth,
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
"[email-masked]" with one line of text: "help".