ReactOS 0.4.16-dev-2104-gb84fa49
scanf.c File Reference
#include <conio.h>
#include <stdarg.h>
#include <limits.h>
#include <math.h>
#include "windef.h"
#include "winbase.h"
#include "winternl.h"
#include "msvcrt.h"
#include "wine/debug.h"
#include "scanf.h"
Include dependency graph for scanf.c:

Go to the source code of this file.

Macros

#define SECURE   1
 
#define WIDE_SCANF   1
 
#define SECURE   1
 
#define STRING   1
 
#define SECURE   1
 
#define STRING_LEN   1
 
#define SECURE
 
#define WIDE_SCANF   1
 
#define STRING   1
 
#define STRING_LEN   1
 
#define SECURE   1
 
#define SECURE   1
 
#define CONSOLE   1
 
#define SECURE   1
 
#define WIDE_SCANF   1
 
#define CONSOLE   1
 
#define SECURE   1
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (msvcrt)
 
static int char2digit (char c, int base)
 
static int wchar2digit (wchar_t c, int base)
 
int WINAPIV fscanf (FILE *file, const char *format,...)
 
int WINAPIV _fscanf_l (FILE *file, const char *format, _locale_t locale,...)
 
int WINAPIV fscanf_s (FILE *file, const char *format,...)
 
int WINAPIV _fscanf_s_l (FILE *file, const char *format, _locale_t locale,...)
 
int WINAPIV scanf (const char *format,...)
 
int WINAPIV _scanf_l (const char *format, _locale_t locale,...)
 
int WINAPIV scanf_s (const char *format,...)
 
int WINAPIV _scanf_s_l (const char *format, _locale_t locale,...)
 
int WINAPIV fwscanf (FILE *file, const wchar_t *format,...)
 
int WINAPIV _fwscanf_l (FILE *file, const wchar_t *format, _locale_t locale,...)
 
int WINAPIV fwscanf_s (FILE *file, const wchar_t *format,...)
 
int WINAPIV _fwscanf_s_l (FILE *file, const wchar_t *format, _locale_t locale,...)
 
int WINAPIV wscanf (const wchar_t *format,...)
 
int WINAPIV _wscanf_l (const wchar_t *format, _locale_t locale,...)
 
int WINAPIV wscanf_s (const wchar_t *format,...)
 
int WINAPIV _wscanf_s_l (const wchar_t *format, _locale_t locale,...)
 
int WINAPIV sscanf (const char *str, const char *format,...)
 
int WINAPIV _sscanf_l (const char *str, const char *format, _locale_t locale,...)
 
int WINAPIV sscanf_s (const char *str, const char *format,...)
 
int WINAPIV _sscanf_s_l (const char *str, const char *format, _locale_t locale,...)
 
int WINAPIV swscanf (const wchar_t *str, const wchar_t *format,...)
 
int WINAPIV _swscanf_l (const wchar_t *str, const wchar_t *format, _locale_t locale,...)
 
int WINAPIV swscanf_s (const wchar_t *str, const wchar_t *format,...)
 
int WINAPIV _swscanf_s_l (const wchar_t *str, const wchar_t *format, _locale_t locale,...)
 
int WINAPIV _cscanf (const char *format,...)
 
int WINAPIV _cscanf_l (const char *format, _locale_t locale,...)
 
int WINAPIV _cscanf_s (const char *format,...)
 
int WINAPIV _cscanf_s_l (const char *format, _locale_t locale,...)
 
int WINAPIV _cwscanf (const wchar_t *format,...)
 
int WINAPIV _cwscanf_l (const wchar_t *format, _locale_t locale,...)
 
int WINAPIV _cwscanf_s (const wchar_t *format,...)
 
int WINAPIV _cwscanf_s_l (const wchar_t *format, _locale_t locale,...)
 
int WINAPIV _snscanf (const char *input, size_t length, const char *format,...)
 
int WINAPIV _snscanf_l (const char *input, size_t length, const char *format, _locale_t locale,...)
 
int WINAPIV _snscanf_s (const char *input, size_t length, const char *format,...)
 
int WINAPIV _snscanf_s_l (const char *input, size_t length, const char *format, _locale_t locale,...)
 
int CDECL __stdio_common_vsscanf (unsigned __int64 options, const char *input, size_t length, const char *format, _locale_t locale, va_list valist)
 
int CDECL __stdio_common_vswscanf (unsigned __int64 options, const wchar_t *input, size_t length, const wchar_t *format, _locale_t locale, va_list valist)
 
int CDECL __stdio_common_vfscanf (unsigned __int64 options, FILE *file, const char *format, _locale_t locale, va_list valist)
 
int CDECL __stdio_common_vfwscanf (unsigned __int64 options, FILE *file, const wchar_t *format, _locale_t locale, va_list valist)
 
int WINAPIV _snwscanf (wchar_t *input, size_t length, const wchar_t *format,...)
 
int WINAPIV _snwscanf_l (wchar_t *input, size_t length, const wchar_t *format, _locale_t locale,...)
 
int WINAPIV _snwscanf_s (wchar_t *input, size_t length, const wchar_t *format,...)
 
int WINAPIV _snwscanf_s_l (wchar_t *input, size_t length, const wchar_t *format, _locale_t locale,...)
 

Macro Definition Documentation

◆ CONSOLE [1/2]

#define CONSOLE   1

Definition at line 137 of file scanf.c.

◆ CONSOLE [2/2]

#define CONSOLE   1

Definition at line 137 of file scanf.c.

◆ SECURE [1/8]

#define SECURE   1

Definition at line 143 of file scanf.c.

◆ SECURE [2/8]

#define SECURE   1

Definition at line 143 of file scanf.c.

◆ SECURE [3/8]

#define SECURE   1

Definition at line 143 of file scanf.c.

◆ SECURE [4/8]

#define SECURE

Definition at line 143 of file scanf.c.

◆ SECURE [5/8]

#define SECURE   1

Definition at line 143 of file scanf.c.

◆ SECURE [6/8]

#define SECURE   1

Definition at line 143 of file scanf.c.

◆ SECURE [7/8]

#define SECURE   1

Definition at line 143 of file scanf.c.

◆ SECURE [8/8]

#define SECURE   1

Definition at line 143 of file scanf.c.

◆ STRING [1/2]

#define STRING   1

Definition at line 107 of file scanf.c.

◆ STRING [2/2]

#define STRING   1

Definition at line 107 of file scanf.c.

◆ STRING_LEN [1/2]

#define STRING_LEN   1

Definition at line 112 of file scanf.c.

◆ STRING_LEN [2/2]

#define STRING_LEN   1

Definition at line 112 of file scanf.c.

◆ WIDE_SCANF [1/3]

#define WIDE_SCANF   1

Definition at line 136 of file scanf.c.

◆ WIDE_SCANF [2/3]

#define WIDE_SCANF   1

Definition at line 136 of file scanf.c.

◆ WIDE_SCANF [3/3]

#define WIDE_SCANF   1

Definition at line 136 of file scanf.c.

Function Documentation

◆ __stdio_common_vfscanf()

int CDECL __stdio_common_vfscanf ( unsigned __int64  options,
FILE file,
const char format,
_locale_t  locale,
va_list  valist 
)

Definition at line 707 of file scanf.c.

712{
714 FIXME("options %#I64x not handled\n", options);
716 return vfscanf_s_l(file, format, locale, valist);
717 else
718 return vfscanf_l(file, format, locale, valist);
719}
#define FIXME(fmt,...)
Definition: precomp.h:53
Definition: _locale.h:75
#define _CRT_INTERNAL_SCANF_LEGACY_WIDE_SPECIFIERS
#define _CRT_INTERNAL_SCANF_SECURECRT
static va_list valist
Definition: printf.c:46
Definition: fci.c:127
Definition: format.c:58

◆ __stdio_common_vfwscanf()

int CDECL __stdio_common_vfwscanf ( unsigned __int64  options,
FILE file,
const wchar_t format,
_locale_t  locale,
va_list  valist 
)

Definition at line 724 of file scanf.c.

729{
731 FIXME("options %#I64x not handled\n", options);
733 return vfwscanf_s_l(file, format, locale, valist);
734 else
735 return vfwscanf_l(file, format, locale, valist);
736}

◆ __stdio_common_vsscanf()

int CDECL __stdio_common_vsscanf ( unsigned __int64  options,
const char input,
size_t  length,
const char format,
_locale_t  locale,
va_list  valist 
)

Definition at line 667 of file scanf.c.

672{
673 /* LEGACY_WIDE_SPECIFIERS only has got an effect on the wide
674 * scanf. LEGACY_MSVCRT_COMPATIBILITY affects parsing of nan/inf,
675 * but parsing of those isn't implemented at all yet. */
677 FIXME("options %#I64x not handled\n", options);
679 return vsnscanf_s_l(input, length, format, locale, valist);
680 else
681 return vsnscanf_l(input, length, format, locale, valist);
682}
#define UCRTBASE_SCANF_MASK
Definition: msvcrt.h:412
GLuint GLsizei GLsizei * length
Definition: glext.h:6040
GLenum GLenum GLenum input
Definition: glext.h:9031

Referenced by vsscanf_wrapper().

◆ __stdio_common_vswscanf()

int CDECL __stdio_common_vswscanf ( unsigned __int64  options,
const wchar_t input,
size_t  length,
const wchar_t format,
_locale_t  locale,
va_list  valist 
)

Definition at line 687 of file scanf.c.

692{
693 /* LEGACY_WIDE_SPECIFIERS only has got an effect on the wide
694 * scanf. LEGACY_MSVCRT_COMPATIBILITY affects parsing of nan/inf,
695 * but parsing of those isn't implemented at all yet. */
697 FIXME("options %#I64x not handled\n", options);
699 return vsnwscanf_s_l(input, length, format, locale, valist);
700 else
701 return vsnwscanf_l(input, length, format, locale, valist);
702}

◆ _cscanf()

int WINAPIV _cscanf ( const char format,
  ... 
)

Definition at line 496 of file scanf.c.

497{
499 int res;
500
502 res = vcscanf_l(format, NULL, valist);
503 va_end(valist);
504 return res;
505}
#define NULL
Definition: types.h:112
#define va_end(v)
Definition: stdarg.h:28
#define va_start(v, l)
Definition: stdarg.h:26
char * va_list
Definition: vadefs.h:50
GLuint res
Definition: glext.h:9613

◆ _cscanf_l()

int WINAPIV _cscanf_l ( const char format,
_locale_t  locale,
  ... 
)

Definition at line 510 of file scanf.c.

511{
513 int res;
514
516 res = vcscanf_l(format, locale, valist);
517 va_end(valist);
518 return res;
519}

◆ _cscanf_s()

int WINAPIV _cscanf_s ( const char format,
  ... 
)

Definition at line 524 of file scanf.c.

525{
527 int res;
528
530 res = vcscanf_s_l(format, NULL, valist);
531 va_end(valist);
532 return res;
533}

◆ _cscanf_s_l()

int WINAPIV _cscanf_s_l ( const char format,
_locale_t  locale,
  ... 
)

Definition at line 538 of file scanf.c.

539{
541 int res;
542
544 res = vcscanf_s_l(format, locale, valist);
545 va_end(valist);
546 return res;
547}

◆ _cwscanf()

int WINAPIV _cwscanf ( const wchar_t format,
  ... 
)

Definition at line 552 of file scanf.c.

553{
555 int res;
556
558 res = vcwscanf_l(format, NULL, valist);
559 va_end(valist);
560 return res;
561}

◆ _cwscanf_l()

int WINAPIV _cwscanf_l ( const wchar_t format,
_locale_t  locale,
  ... 
)

Definition at line 566 of file scanf.c.

567{
569 int res;
570
572 res = vcwscanf_l(format, locale, valist);
573 va_end(valist);
574 return res;
575}

◆ _cwscanf_s()

int WINAPIV _cwscanf_s ( const wchar_t format,
  ... 
)

Definition at line 580 of file scanf.c.

581{
583 int res;
584
586 res = vcwscanf_s_l(format, NULL, valist);
587 va_end(valist);
588 return res;
589}

◆ _cwscanf_s_l()

int WINAPIV _cwscanf_s_l ( const wchar_t format,
_locale_t  locale,
  ... 
)

Definition at line 594 of file scanf.c.

595{
597 int res;
598
600 res = vcwscanf_s_l(format, locale, valist);
601 va_end(valist);
602 return res;
603}

◆ _fscanf_l()

int WINAPIV _fscanf_l ( FILE file,
const char format,
_locale_t  locale,
  ... 
)

Definition at line 164 of file scanf.c.

166{
168 int res;
169
171 res = vfscanf_l(file, format, locale, valist);
172 va_end(valist);
173 return res;
174}

◆ _fscanf_s_l()

int WINAPIV _fscanf_s_l ( FILE file,
const char format,
_locale_t  locale,
  ... 
)

Definition at line 193 of file scanf.c.

195{
197 int res;
198
200 res = vfscanf_s_l(file, format, locale, valist);
201 va_end(valist);
202 return res;
203}

◆ _fwscanf_l()

int WINAPIV _fwscanf_l ( FILE file,
const wchar_t format,
_locale_t  locale,
  ... 
)

Definition at line 278 of file scanf.c.

280{
282 int res;
283
285 res = vfwscanf_l(file, format, locale, valist);
286 va_end(valist);
287 return res;
288}

◆ _fwscanf_s_l()

int WINAPIV _fwscanf_s_l ( FILE file,
const wchar_t format,
_locale_t  locale,
  ... 
)

Definition at line 307 of file scanf.c.

309{
311 int res;
312
314 res = vfwscanf_s_l(file, format, locale, valist);
315 va_end(valist);
316 return res;
317}

◆ _scanf_l()

int WINAPIV _scanf_l ( const char format,
_locale_t  locale,
  ... 
)

Definition at line 222 of file scanf.c.

223{
225 int res;
226
228 res = vfscanf_l(stdin, format, locale, valist);
229 va_end(valist);
230 return res;
231}
#define stdin

◆ _scanf_s_l()

int WINAPIV _scanf_s_l ( const char format,
_locale_t  locale,
  ... 
)

Definition at line 250 of file scanf.c.

251{
253 int res;
254
256 res = vfscanf_s_l(stdin, format, locale, valist);
257 va_end(valist);
258 return res;
259}

◆ _snscanf()

int WINAPIV _snscanf ( const char input,
size_t  length,
const char format,
  ... 
)

Definition at line 608 of file scanf.c.

609{
611 int res;
612
614 res = vsnscanf_l(input, length, format, NULL, valist);
615 va_end(valist);
616 return res;
617}

◆ _snscanf_l()

int WINAPIV _snscanf_l ( const char input,
size_t  length,
const char format,
_locale_t  locale,
  ... 
)

Definition at line 622 of file scanf.c.

624{
626 int res;
627
629 res = vsnscanf_l(input, length, format, locale, valist);
630 va_end(valist);
631 return res;
632}

◆ _snscanf_s()

int WINAPIV _snscanf_s ( const char input,
size_t  length,
const char format,
  ... 
)

Definition at line 637 of file scanf.c.

638{
640 int res;
641
643 res = vsnscanf_s_l(input, length, format, NULL, valist);
644 va_end(valist);
645 return res;
646}

◆ _snscanf_s_l()

int WINAPIV _snscanf_s_l ( const char input,
size_t  length,
const char format,
_locale_t  locale,
  ... 
)

Definition at line 651 of file scanf.c.

653{
655 int res;
656
658 res = vsnscanf_s_l(input, length, format, locale, valist);
659 va_end(valist);
660 return res;
661}

◆ _snwscanf()

int WINAPIV _snwscanf ( wchar_t input,
size_t  length,
const wchar_t format,
  ... 
)

Definition at line 741 of file scanf.c.

743{
745 int res;
746
748 res = vsnwscanf_l(input, length, format, NULL, valist);
749 va_end(valist);
750 return res;
751}

◆ _snwscanf_l()

int WINAPIV _snwscanf_l ( wchar_t input,
size_t  length,
const wchar_t format,
_locale_t  locale,
  ... 
)

Definition at line 756 of file scanf.c.

758{
760 int res;
761
763 res = vsnwscanf_l(input, length, format, locale, valist);
764 va_end(valist);
765 return res;
766}

◆ _snwscanf_s()

int WINAPIV _snwscanf_s ( wchar_t input,
size_t  length,
const wchar_t format,
  ... 
)

Definition at line 771 of file scanf.c.

773{
775 int res;
776
778 res = vsnwscanf_s_l(input, length, format, NULL, valist);
779 va_end(valist);
780 return res;
781}

◆ _snwscanf_s_l()

int WINAPIV _snwscanf_s_l ( wchar_t input,
size_t  length,
const wchar_t format,
_locale_t  locale,
  ... 
)

Definition at line 786 of file scanf.c.

788{
790 int res;
791
793 res = vsnwscanf_s_l(input, length, format, locale, valist);
794 va_end(valist);
795 return res;
796}

◆ _sscanf_l()

int WINAPIV _sscanf_l ( const char str,
const char format,
_locale_t  locale,
  ... 
)

Definition at line 394 of file scanf.c.

396{
398 int res;
399
401 res = vsscanf_l(str, format, locale, valist);
402 va_end(valist);
403 return res;
404}
const WCHAR * str

◆ _sscanf_s_l()

int WINAPIV _sscanf_s_l ( const char str,
const char format,
_locale_t  locale,
  ... 
)

Definition at line 423 of file scanf.c.

425{
427 int res;
428
430 res = vsscanf_s_l(str, format, locale, valist);
431 va_end(valist);
432 return res;
433}

◆ _swscanf_l()

int WINAPIV _swscanf_l ( const wchar_t str,
const wchar_t format,
_locale_t  locale,
  ... 
)

Definition at line 452 of file scanf.c.

454{
456 int res;
457
459 res = vswscanf_l(str, format, locale, valist);
460 va_end(valist);
461 return res;
462}

◆ _swscanf_s_l()

int WINAPIV _swscanf_s_l ( const wchar_t str,
const wchar_t format,
_locale_t  locale,
  ... 
)

Definition at line 481 of file scanf.c.

483{
485 int res;
486
488 res = vswscanf_s_l(str, format, locale, valist);
489 va_end(valist);
490 return res;
491}

◆ _wscanf_l()

int WINAPIV _wscanf_l ( const wchar_t format,
_locale_t  locale,
  ... 
)

Definition at line 336 of file scanf.c.

338{
340 int res;
341
343 res = vfwscanf_l(stdin, format, locale, valist);
344 va_end(valist);
345 return res;
346}

◆ _wscanf_s_l()

int WINAPIV _wscanf_s_l ( const wchar_t format,
_locale_t  locale,
  ... 
)

Definition at line 365 of file scanf.c.

367{
369 int res;
370
372 res = vfwscanf_s_l(stdin, format, locale, valist);
373 va_end(valist);
374 return res;
375}

◆ char2digit()

static int char2digit ( char  c,
int  base 
)
static

Definition at line 42 of file scanf.c.

42 {
43 if ((c>='0') && (c<='9') && (c<='0'+base-1)) return (c-'0');
44 if (base<=10) return -1;
45 if ((c>='A') && (c<='Z') && (c<='A'+base-11)) return (c-'A'+10);
46 if ((c>='a') && (c<='z') && (c<='a'+base-11)) return (c-'a'+10);
47 return -1;
48}
const GLubyte * c
Definition: glext.h:8905

◆ fscanf()

int WINAPIV fscanf ( FILE file,
const char format,
  ... 
)

Definition at line 150 of file scanf.c.

151{
153 int res;
154
156 res = vfscanf_l(file, format, NULL, valist);
157 va_end(valist);
158 return res;
159}

Referenced by test_fscanf().

◆ fscanf_s()

int WINAPIV fscanf_s ( FILE file,
const char format,
  ... 
)

Definition at line 179 of file scanf.c.

180{
182 int res;
183
185 res = vfscanf_s_l(file, format, NULL, valist);
186 va_end(valist);
187 return res;
188}

◆ fwscanf()

int WINAPIV fwscanf ( FILE file,
const wchar_t format,
  ... 
)

Definition at line 264 of file scanf.c.

265{
267 int res;
268
270 res = vfwscanf_l(file, format, NULL, valist);
271 va_end(valist);
272 return res;
273}

◆ fwscanf_s()

int WINAPIV fwscanf_s ( FILE file,
const wchar_t format,
  ... 
)

Definition at line 293 of file scanf.c.

294{
296 int res;
297
299 res = vfwscanf_s_l(file, format, NULL, valist);
300 va_end(valist);
301 return res;
302}

◆ scanf()

int WINAPIV scanf ( const char format,
  ... 
)

Definition at line 208 of file scanf.c.

209{
211 int res;
212
214 res = vfscanf_l(stdin, format, NULL, valist);
215 va_end(valist);
216 return res;
217}

◆ scanf_s()

int WINAPIV scanf_s ( const char format,
  ... 
)

Definition at line 236 of file scanf.c.

237{
239 int res;
240
242 res = vfscanf_s_l(stdin, format, NULL, valist);
243 va_end(valist);
244 return res;
245}

◆ sscanf()

int WINAPIV sscanf ( const char str,
const char format,
  ... 
)

Definition at line 380 of file scanf.c.

381{
383 int res;
384
386 res = vsscanf_l(str, format, NULL, valist);
387 va_end(valist);
388 return res;
389}

◆ sscanf_s()

int WINAPIV sscanf_s ( const char str,
const char format,
  ... 
)

Definition at line 409 of file scanf.c.

410{
412 int res;
413
415 res = vsscanf_s_l(str, format, NULL, valist);
416 va_end(valist);
417 return res;
418}

◆ swscanf()

int WINAPIV swscanf ( const wchar_t str,
const wchar_t format,
  ... 
)

Definition at line 438 of file scanf.c.

439{
441 int res;
442
444 res = vswscanf_l(str, format, NULL, valist);
445 va_end(valist);
446 return res;
447}

Referenced by test_swscanf().

◆ swscanf_s()

int WINAPIV swscanf_s ( const wchar_t str,
const wchar_t format,
  ... 
)

Definition at line 467 of file scanf.c.

468{
470 int res;
471
473 res = vswscanf_s_l(str, format, NULL, valist);
474 va_end(valist);
475 return res;
476}

◆ wchar2digit()

static int wchar2digit ( wchar_t  c,
int  base 
)
static

Definition at line 53 of file scanf.c.

53 {
54 if ((c>='0') && (c<='9') && (c<='0'+base-1)) return (c-'0');
55 if (base<=10) return -1;
56 if ((c>='A') && (c<='Z') && (c<='A'+base-11)) return (c-'A'+10);
57 if ((c>='a') && (c<='z') && (c<='a'+base-11)) return (c-'a'+10);
58 return -1;
59}

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( msvcrt  )

◆ wscanf()

int WINAPIV wscanf ( const wchar_t format,
  ... 
)

Definition at line 322 of file scanf.c.

323{
325 int res;
326
328 res = vfwscanf_l(stdin, format, NULL, valist);
329 va_end(valist);
330 return res;
331}

◆ wscanf_s()

int WINAPIV wscanf_s ( const wchar_t format,
  ... 
)

Definition at line 351 of file scanf.c.

352{
354 int res;
355
357 res = vfwscanf_s_l(stdin, format, NULL, valist);
358 va_end(valist);
359 return res;
360}