%n returns the number of consumed characters.

This commit is contained in:
Uwe Bonnes 2003-10-10 00:00:19 +00:00 committed by Alexandre Julliard
parent 5cb5aa6346
commit 242beda8d2

View file

@ -42,15 +42,15 @@
#endif /* WIDE_SCANF */
#ifdef CONSOLE
#define _GETC_(file) _getch()
#define _UNGETC_(nch, file) _ungetch(nch)
#define _GETC_(file) (consumed++, _getch())
#define _UNGETC_(nch, file) do { _ungetch(nch); consumed--; } while(0)
#define _FUNCTION_ _cscanf(const _CHAR_ *format, ...)
#else
#ifdef STRING
#undef _EOF_
#define _EOF_ 0
#define _GETC_(file) *file++
#define _UNGETC_(nch, file) file--
#define _GETC_(file) (consumed++, *file++)
#define _UNGETC_(nch, file) do { file--; consumed--; } while(0)
#ifdef WIDE_SCANF
#define _FUNCTION_ MSVCRT_swscanf(const MSVCRT_wchar_t *file, const MSVCRT_wchar_t *format, ...)
#else /* WIDE_SCANF */
@ -58,12 +58,12 @@
#endif /* WIDE_SCANF */
#else /* STRING */
#ifdef WIDE_SCANF
#define _GETC_(file) MSVCRT_fgetwc(file)
#define _UNGETC_(nch, file) MSVCRT_ungetwc(nch, file)
#define _GETC_(file) (consumed++, MSVCRT_fgetwc(file))
#define _UNGETC_(nch, file) do { MSVCRT_ungetwc(nch, file); consumed--; } while(0)
#define _FUNCTION_ MSVCRT_fwscanf(MSVCRT_FILE* file, const MSVCRT_wchar_t *format, ...)
#else /* WIDE_SCANF */
#define _GETC_(file) MSVCRT_fgetc(file)
#define _UNGETC_(nch, file) MSVCRT_ungetc(nch, file)
#define _GETC_(file) (consumed++, MSVCRT_fgetc(file))
#define _UNGETC_(nch, file) do { MSVCRT_ungetc(nch, file); consumed--; } while(0)
#define _FUNCTION_ MSVCRT_fscanf(MSVCRT_FILE* file, const char *format, ...)
#endif /* WIDE_SCANF */
#endif /* STRING */
@ -76,7 +76,7 @@
* more types of format spec.
*/
int _FUNCTION_ {
int rd = 0;
int rd = 0, consumed = 0;
int nch;
va_list ap;
if (!*format) return 0;
@ -430,7 +430,7 @@ int _FUNCTION_ {
case 'n': {
if (!suppress) {
int*n = va_arg(ap, int*);
*n = rd;
*n = consumed - (nch!=_EOF_);
}
}
break;