From: colin AT fu DOT is DOT saga-u DOT ac DOT jp (Colin Peters) Subject: RE: scanf "%n" format specifier is not supported 23 Jun 1998 10:11:40 -0700 Message-ID: <001f01bd9e5b$e2ba13a0$fa173185.cygnus.gnu-win32@gbird0.fu.is.saga-u.ac.jp> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit To: "Alexander Chernov" Cc: "GNU-Win32" Alexander Chernov 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 >#include > > 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".