ReactOS 0.4.16-dev-2104-gb84fa49
scanf.c
Go to the documentation of this file.
1/*
2 * general implementation of scanf used by scanf, sscanf, fscanf,
3 * _cscanf, wscanf, swscanf and fwscanf
4 *
5 * Copyright 1996,1998 Marcus Meissner
6 * Copyright 1996 Jukka Iivonen
7 * Copyright 1997,2000 Uwe Bonnes
8 * Copyright 2000 Jon Griffiths
9 * Copyright 2002 Daniel Gudbjartsson
10 *
11 * This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU Lesser General Public
13 * License as published by the Free Software Foundation; either
14 * version 2.1 of the License, or (at your option) any later version.
15 *
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 * Lesser General Public License for more details.
20 *
21 * You should have received a copy of the GNU Lesser General Public
22 * License along with this library; if not, write to the Free Software
23 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
24 */
25
26#include <conio.h>
27#include <stdarg.h>
28#include <limits.h>
29#include <math.h>
30
31#include "windef.h"
32#include "winbase.h"
33#include "winternl.h"
34#include "msvcrt.h"
35#include "wine/debug.h"
36
38
39/* helper function for *scanf. Returns the value of character c in the
40 * given base, or -1 if the given character is not a digit of the base.
41 */
42static int char2digit(char c, int base) {
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}
49
50/* helper function for *wscanf. Returns the value of character c in the
51 * given base, or -1 if the given character is not a digit of the base.
52 */
53static int wchar2digit(wchar_t c, int base) {
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}
60
61/* vfscanf_l */
62#undef WIDE_SCANF
63#undef CONSOLE
64#undef STRING
65#undef SECURE
66#include "scanf.h"
67
68/* vfscanf_s_l */
69#define SECURE 1
70#include "scanf.h"
71
72/* vfwscanf_l */
73#define WIDE_SCANF 1
74#undef CONSOLE
75#undef STRING
76#undef SECURE
77#include "scanf.h"
78
79/* vfwscanf_s_l */
80#define SECURE 1
81#include "scanf.h"
82
83/* vsscanf_l */
84#undef WIDE_SCANF
85#undef CONSOLE
86#define STRING 1
87#undef SECURE
88#include "scanf.h"
89
90/* vsscanf_s_l */
91#define SECURE 1
92#include "scanf.h"
93
94/* vsnscanf_l */
95#undef SECURE
96#define STRING_LEN 1
97#include "scanf.h"
98
99/* vsnscanf_s_l */
100#define SECURE
101#include "scanf.h"
102#undef STRING_LEN
103
104/* vswscanf_l */
105#define WIDE_SCANF 1
106#undef CONSOLE
107#define STRING 1
108#undef SECURE
109#include "scanf.h"
110
111/* vsnwscanf_l */
112#define STRING_LEN 1
113#include "scanf.h"
114
115/* vsnwscanf_s_l */
116#define SECURE 1
117#include "scanf.h"
118#undef STRING_LEN
119
120/* vswscanf_s_l */
121#define SECURE 1
122#include "scanf.h"
123
124/* vcscanf_l */
125#undef WIDE_SCANF
126#define CONSOLE 1
127#undef STRING
128#undef SECURE
129#include "scanf.h"
130
131/* vcscanf_s_l */
132#define SECURE 1
133#include "scanf.h"
134
135/* vcwscanf_l */
136#define WIDE_SCANF 1
137#define CONSOLE 1
138#undef STRING
139#undef SECURE
140#include "scanf.h"
141
142/* vcwscanf_s_l */
143#define SECURE 1
144#include "scanf.h"
145
146
147/*********************************************************************
148 * fscanf (MSVCRT.@)
149 */
150int WINAPIV fscanf(FILE *file, const char *format, ...)
151{
153 int res;
154
156 res = vfscanf_l(file, format, NULL, valist);
157 va_end(valist);
158 return res;
159}
160
161/*********************************************************************
162 * _fscanf_l (MSVCRT.@)
163 */
164int WINAPIV _fscanf_l(FILE *file, const char *format,
165 _locale_t locale, ...)
166{
168 int res;
169
171 res = vfscanf_l(file, format, locale, valist);
172 va_end(valist);
173 return res;
174}
175
176/*********************************************************************
177 * fscanf_s (MSVCRT.@)
178 */
179int WINAPIV fscanf_s(FILE *file, const char *format, ...)
180{
182 int res;
183
185 res = vfscanf_s_l(file, format, NULL, valist);
186 va_end(valist);
187 return res;
188}
189
190/*********************************************************************
191 * _fscanf_s_l (MSVCRT.@)
192 */
194 _locale_t locale, ...)
195{
197 int res;
198
200 res = vfscanf_s_l(file, format, locale, valist);
201 va_end(valist);
202 return res;
203}
204
205/*********************************************************************
206 * scanf (MSVCRT.@)
207 */
208int WINAPIV scanf(const char *format, ...)
209{
211 int res;
212
214 res = vfscanf_l(stdin, format, NULL, valist);
215 va_end(valist);
216 return res;
217}
218
219/*********************************************************************
220 * _scanf_l (MSVCRT.@)
221 */
222int WINAPIV _scanf_l(const char *format, _locale_t locale, ...)
223{
225 int res;
226
228 res = vfscanf_l(stdin, format, locale, valist);
229 va_end(valist);
230 return res;
231}
232
233/*********************************************************************
234 * scanf_s (MSVCRT.@)
235 */
236int WINAPIV scanf_s(const char *format, ...)
237{
239 int res;
240
242 res = vfscanf_s_l(stdin, format, NULL, valist);
243 va_end(valist);
244 return res;
245}
246
247/*********************************************************************
248 * _scanf_s_l (MSVCRT.@)
249 */
251{
253 int res;
254
256 res = vfscanf_s_l(stdin, format, locale, valist);
257 va_end(valist);
258 return res;
259}
260
261/*********************************************************************
262 * fwscanf (MSVCRT.@)
263 */
264int WINAPIV fwscanf(FILE *file, const wchar_t *format, ...)
265{
267 int res;
268
270 res = vfwscanf_l(file, format, NULL, valist);
271 va_end(valist);
272 return res;
273}
274
275/*********************************************************************
276 * _fwscanf_l (MSVCRT.@)
277 */
278int WINAPIV _fwscanf_l(FILE *file, const wchar_t *format,
279 _locale_t locale, ...)
280{
282 int res;
283
285 res = vfwscanf_l(file, format, locale, valist);
286 va_end(valist);
287 return res;
288}
289
290/*********************************************************************
291 * fwscanf_s (MSVCRT.@)
292 */
293int WINAPIV fwscanf_s(FILE *file, const wchar_t *format, ...)
294{
296 int res;
297
299 res = vfwscanf_s_l(file, format, NULL, valist);
300 va_end(valist);
301 return res;
302}
303
304/*********************************************************************
305 * _fwscanf_s_l (MSVCRT.@)
306 */
307int WINAPIV _fwscanf_s_l(FILE *file, const wchar_t *format,
308 _locale_t locale, ...)
309{
311 int res;
312
314 res = vfwscanf_s_l(file, format, locale, valist);
315 va_end(valist);
316 return res;
317}
318
319/*********************************************************************
320 * wscanf (MSVCRT.@)
321 */
322int WINAPIV wscanf(const wchar_t *format, ...)
323{
325 int res;
326
328 res = vfwscanf_l(stdin, format, NULL, valist);
329 va_end(valist);
330 return res;
331}
332
333/*********************************************************************
334 * _wscanf_l (MSVCRT.@)
335 */
336int WINAPIV _wscanf_l(const wchar_t *format,
337 _locale_t locale, ...)
338{
340 int res;
341
343 res = vfwscanf_l(stdin, format, locale, valist);
344 va_end(valist);
345 return res;
346}
347
348/*********************************************************************
349 * wscanf_s (MSVCRT.@)
350 */
351int WINAPIV wscanf_s(const wchar_t *format, ...)
352{
354 int res;
355
357 res = vfwscanf_s_l(stdin, format, NULL, valist);
358 va_end(valist);
359 return res;
360}
361
362/*********************************************************************
363 * _wscanf_s_l (MSVCRT.@)
364 */
365int WINAPIV _wscanf_s_l(const wchar_t *format,
366 _locale_t locale, ...)
367{
369 int res;
370
372 res = vfwscanf_s_l(stdin, format, locale, valist);
373 va_end(valist);
374 return res;
375}
376
377/*********************************************************************
378 * sscanf (MSVCRT.@)
379 */
380int WINAPIV sscanf(const char *str, const char *format, ...)
381{
383 int res;
384
386 res = vsscanf_l(str, format, NULL, valist);
387 va_end(valist);
388 return res;
389}
390
391/*********************************************************************
392 * _sscanf_l (MSVCRT.@)
393 */
394int WINAPIV _sscanf_l(const char *str, const char *format,
395 _locale_t locale, ...)
396{
398 int res;
399
401 res = vsscanf_l(str, format, locale, valist);
402 va_end(valist);
403 return res;
404}
405
406/*********************************************************************
407 * sscanf_s (MSVCRT.@)
408 */
409int WINAPIV sscanf_s(const char *str, const char *format, ...)
410{
412 int res;
413
415 res = vsscanf_s_l(str, format, NULL, valist);
416 va_end(valist);
417 return res;
418}
419
420/*********************************************************************
421 * _sscanf_s_l (MSVCRT.@)
422 */
423int WINAPIV _sscanf_s_l(const char *str, const char *format,
424 _locale_t locale, ...)
425{
427 int res;
428
430 res = vsscanf_s_l(str, format, locale, valist);
431 va_end(valist);
432 return res;
433}
434
435/*********************************************************************
436 * swscanf (MSVCRT.@)
437 */
438int WINAPIV swscanf(const wchar_t *str, const wchar_t *format, ...)
439{
441 int res;
442
444 res = vswscanf_l(str, format, NULL, valist);
445 va_end(valist);
446 return res;
447}
448
449/*********************************************************************
450 * _swscanf_l (MSVCRT.@)
451 */
452int WINAPIV _swscanf_l(const wchar_t *str, const wchar_t *format,
453 _locale_t locale, ...)
454{
456 int res;
457
459 res = vswscanf_l(str, format, locale, valist);
460 va_end(valist);
461 return res;
462}
463
464/*********************************************************************
465 * swscanf_s (MSVCRT.@)
466 */
467int WINAPIV swscanf_s(const wchar_t *str, const wchar_t *format, ...)
468{
470 int res;
471
473 res = vswscanf_s_l(str, format, NULL, valist);
474 va_end(valist);
475 return res;
476}
477
478/*********************************************************************
479 * _swscanf_s_l (MSVCRT.@)
480 */
481int WINAPIV _swscanf_s_l(const wchar_t *str, const wchar_t *format,
482 _locale_t locale, ...)
483{
485 int res;
486
488 res = vswscanf_s_l(str, format, locale, valist);
489 va_end(valist);
490 return res;
491}
492
493/*********************************************************************
494 * _cscanf (MSVCRT.@)
495 */
496int WINAPIV _cscanf(const char *format, ...)
497{
499 int res;
500
502 res = vcscanf_l(format, NULL, valist);
503 va_end(valist);
504 return res;
505}
506
507/*********************************************************************
508 * _cscanf_l (MSVCRT.@)
509 */
511{
513 int res;
514
516 res = vcscanf_l(format, locale, valist);
517 va_end(valist);
518 return res;
519}
520
521/*********************************************************************
522 * _cscanf_s (MSVCRT.@)
523 */
524int WINAPIV _cscanf_s(const char *format, ...)
525{
527 int res;
528
530 res = vcscanf_s_l(format, NULL, valist);
531 va_end(valist);
532 return res;
533}
534
535/*********************************************************************
536 * _cscanf_s_l (MSVCRT.@)
537 */
539{
541 int res;
542
544 res = vcscanf_s_l(format, locale, valist);
545 va_end(valist);
546 return res;
547}
548
549/*********************************************************************
550 * _cwscanf (MSVCRT.@)
551 */
552int WINAPIV _cwscanf(const wchar_t *format, ...)
553{
555 int res;
556
558 res = vcwscanf_l(format, NULL, valist);
559 va_end(valist);
560 return res;
561}
562
563/*********************************************************************
564 * _cwscanf_l (MSVCRT.@)
565 */
566int WINAPIV _cwscanf_l(const wchar_t *format, _locale_t locale, ...)
567{
569 int res;
570
572 res = vcwscanf_l(format, locale, valist);
573 va_end(valist);
574 return res;
575}
576
577/*********************************************************************
578 * _cwscanf_s (MSVCRT.@)
579 */
580int WINAPIV _cwscanf_s(const wchar_t *format, ...)
581{
583 int res;
584
586 res = vcwscanf_s_l(format, NULL, valist);
587 va_end(valist);
588 return res;
589}
590
591/*********************************************************************
592 * _cwscanf_s_l (MSVCRT.@)
593 */
594int WINAPIV _cwscanf_s_l(const wchar_t *format, _locale_t locale, ...)
595{
597 int res;
598
600 res = vcwscanf_s_l(format, locale, valist);
601 va_end(valist);
602 return res;
603}
604
605/*********************************************************************
606 * _snscanf (MSVCRT.@)
607 */
608int WINAPIV _snscanf(const char *input, size_t length, const char *format, ...)
609{
611 int res;
612
614 res = vsnscanf_l(input, length, format, NULL, valist);
615 va_end(valist);
616 return res;
617}
618
619/*********************************************************************
620 * _snscanf_l (MSVCRT.@)
621 */
622int WINAPIV _snscanf_l(const char *input, size_t length,
623 const char *format, _locale_t locale, ...)
624{
626 int res;
627
629 res = vsnscanf_l(input, length, format, locale, valist);
630 va_end(valist);
631 return res;
632}
633
634/*********************************************************************
635 * _snscanf_s (MSVCRT.@)
636 */
637int WINAPIV _snscanf_s(const char *input, size_t length, const char *format, ...)
638{
640 int res;
641
643 res = vsnscanf_s_l(input, length, format, NULL, valist);
644 va_end(valist);
645 return res;
646}
647
648/*********************************************************************
649 * _snscanf_s_l (MSVCRT.@)
650 */
651int WINAPIV _snscanf_s_l(const char *input, size_t length,
652 const char *format, _locale_t locale, ...)
653{
655 int res;
656
658 res = vsnscanf_s_l(input, length, format, locale, valist);
659 va_end(valist);
660 return res;
661}
662
663
664/*********************************************************************
665 * __stdio_common_vsscanf (UCRTBASE.@)
666 */
668 const char *input, size_t length,
669 const char *format,
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}
683
684/*********************************************************************
685 * __stdio_common_vswscanf (UCRTBASE.@)
686 */
688 const wchar_t *input, size_t length,
689 const wchar_t *format,
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}
703
704/*********************************************************************
705 * __stdio_common_vfscanf (UCRTBASE.@)
706 */
708 FILE *file,
709 const char *format,
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}
720
721/*********************************************************************
722 * __stdio_common_vfwscanf (UCRTBASE.@)
723 */
725 FILE *file,
726 const wchar_t *format,
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}
737
738/*********************************************************************
739 * _snwscanf (MSVCRT.@)
740 */
741int WINAPIV _snwscanf(wchar_t *input, size_t length,
742 const wchar_t *format, ...)
743{
745 int res;
746
748 res = vsnwscanf_l(input, length, format, NULL, valist);
749 va_end(valist);
750 return res;
751}
752
753/*********************************************************************
754 * _snwscanf_l (MSVCRT.@)
755 */
756int WINAPIV _snwscanf_l(wchar_t *input, size_t length,
757 const wchar_t *format, _locale_t locale, ...)
758{
760 int res;
761
763 res = vsnwscanf_l(input, length, format, locale, valist);
764 va_end(valist);
765 return res;
766}
767
768/*********************************************************************
769 * _snwscanf_s (MSVCRT.@)
770 */
771int WINAPIV _snwscanf_s(wchar_t *input, size_t length,
772 const wchar_t *format, ...)
773{
775 int res;
776
778 res = vsnwscanf_s_l(input, length, format, NULL, valist);
779 va_end(valist);
780 return res;
781}
782
783/*********************************************************************
784 * _snscanf_s_l (MSVCRT.@)
785 */
786int WINAPIV _snwscanf_s_l(wchar_t *input, size_t length,
787 const wchar_t *format, _locale_t locale, ...)
788{
790 int res;
791
793 res = vsnwscanf_s_l(input, length, format, locale, valist);
794 va_end(valist);
795 return res;
796}
797
798#if _MSVCR_VER==120
799
800/*********************************************************************
801 * vsscanf (MSVCRT120.@)
802 */
803int CDECL MSVCRT_vsscanf(const char *buffer, const char *format, va_list valist)
804{
805 if (!MSVCRT_CHECK_PMT(buffer != NULL && format != NULL)) return -1;
806
807 return vsscanf_l(buffer, format, NULL, valist);
808}
809
810/*********************************************************************
811 * vswscanf (MSVCRT120.@)
812 */
813int CDECL vswscanf(const wchar_t *buffer, const wchar_t *format, va_list valist)
814{
815 if (!MSVCRT_CHECK_PMT(buffer != NULL && format != NULL)) return -1;
816
817 return vswscanf_l(buffer, format, NULL, valist);
818}
819
820#endif /* _MSVCR_VER>=120 */
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
#define FIXME(fmt,...)
Definition: precomp.h:53
Definition: _locale.h:75
#define NULL
Definition: types.h:112
#define CDECL
Definition: compat.h:29
#define __int64
Definition: corecrt.h:72
#define _CRT_INTERNAL_SCANF_LEGACY_WIDE_SPECIFIERS
#define _CRT_INTERNAL_SCANF_SECURECRT
#define stdin
#define va_end(v)
Definition: stdarg.h:28
#define va_start(v, l)
Definition: stdarg.h:26
char * va_list
Definition: vadefs.h:50
#define MSVCRT_CHECK_PMT(x)
Definition: msvcrt.h:378
#define UCRTBASE_SCANF_MASK
Definition: msvcrt.h:412
int CDECL __stdio_common_vfscanf(unsigned __int64 options, FILE *file, const char *format, _locale_t locale, va_list valist)
Definition: scanf.c:707
int WINAPIV _snscanf_s_l(const char *input, size_t length, const char *format, _locale_t locale,...)
Definition: scanf.c:651
int WINAPIV sscanf_s(const char *str, const char *format,...)
Definition: scanf.c:409
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: scanf.c:687
int WINAPIV _fscanf_s_l(FILE *file, const char *format, _locale_t locale,...)
Definition: scanf.c:193
int WINAPIV _fwscanf_s_l(FILE *file, const wchar_t *format, _locale_t locale,...)
Definition: scanf.c:307
int WINAPIV fwscanf_s(FILE *file, const wchar_t *format,...)
Definition: scanf.c:293
int WINAPIV _fscanf_l(FILE *file, const char *format, _locale_t locale,...)
Definition: scanf.c:164
int WINAPIV _swscanf_s_l(const wchar_t *str, const wchar_t *format, _locale_t locale,...)
Definition: scanf.c:481
int WINAPIV _sscanf_s_l(const char *str, const char *format, _locale_t locale,...)
Definition: scanf.c:423
int WINAPIV _snscanf_s(const char *input, size_t length, const char *format,...)
Definition: scanf.c:637
int WINAPIV _sscanf_l(const char *str, const char *format, _locale_t locale,...)
Definition: scanf.c:394
int WINAPIV wscanf(const wchar_t *format,...)
Definition: scanf.c:322
int WINAPIV _snwscanf_s(wchar_t *input, size_t length, const wchar_t *format,...)
Definition: scanf.c:771
int WINAPIV fwscanf(FILE *file, const wchar_t *format,...)
Definition: scanf.c:264
int WINAPIV _cwscanf_l(const wchar_t *format, _locale_t locale,...)
Definition: scanf.c:566
int CDECL __stdio_common_vfwscanf(unsigned __int64 options, FILE *file, const wchar_t *format, _locale_t locale, va_list valist)
Definition: scanf.c:724
int WINAPIV _snwscanf_l(wchar_t *input, size_t length, const wchar_t *format, _locale_t locale,...)
Definition: scanf.c:756
int WINAPIV _wscanf_s_l(const wchar_t *format, _locale_t locale,...)
Definition: scanf.c:365
static int wchar2digit(wchar_t c, int base)
Definition: scanf.c:53
int WINAPIV fscanf_s(FILE *file, const char *format,...)
Definition: scanf.c:179
static int char2digit(char c, int base)
Definition: scanf.c:42
int WINAPIV _scanf_l(const char *format, _locale_t locale,...)
Definition: scanf.c:222
int WINAPIV _fwscanf_l(FILE *file, const wchar_t *format, _locale_t locale,...)
Definition: scanf.c:278
int WINAPIV _swscanf_l(const wchar_t *str, const wchar_t *format, _locale_t locale,...)
Definition: scanf.c:452
int WINAPIV _snscanf(const char *input, size_t length, const char *format,...)
Definition: scanf.c:608
int WINAPIV _wscanf_l(const wchar_t *format, _locale_t locale,...)
Definition: scanf.c:336
int WINAPIV swscanf(const wchar_t *str, const wchar_t *format,...)
Definition: scanf.c:438
int WINAPIV _cscanf_s_l(const char *format, _locale_t locale,...)
Definition: scanf.c:538
int WINAPIV wscanf_s(const wchar_t *format,...)
Definition: scanf.c:351
int WINAPIV _snscanf_l(const char *input, size_t length, const char *format, _locale_t locale,...)
Definition: scanf.c:622
int WINAPIV swscanf_s(const wchar_t *str, const wchar_t *format,...)
Definition: scanf.c:467
int WINAPIV scanf_s(const char *format,...)
Definition: scanf.c:236
int WINAPIV _cscanf_s(const char *format,...)
Definition: scanf.c:524
int WINAPIV sscanf(const char *str, const char *format,...)
Definition: scanf.c:380
int WINAPIV _cwscanf_s_l(const wchar_t *format, _locale_t locale,...)
Definition: scanf.c:594
int WINAPIV _scanf_s_l(const char *format, _locale_t locale,...)
Definition: scanf.c:250
int WINAPIV _snwscanf_s_l(wchar_t *input, size_t length, const wchar_t *format, _locale_t locale,...)
Definition: scanf.c:786
int WINAPIV _cscanf_l(const char *format, _locale_t locale,...)
Definition: scanf.c:510
int WINAPIV _cscanf(const char *format,...)
Definition: scanf.c:496
int WINAPIV _cwscanf(const wchar_t *format,...)
Definition: scanf.c:552
int WINAPIV _cwscanf_s(const wchar_t *format,...)
Definition: scanf.c:580
int CDECL __stdio_common_vsscanf(unsigned __int64 options, const char *input, size_t length, const char *format, _locale_t locale, va_list valist)
Definition: scanf.c:667
int WINAPIV scanf(const char *format,...)
Definition: scanf.c:208
int WINAPIV fscanf(FILE *file, const char *format,...)
Definition: scanf.c:150
int WINAPIV _snwscanf(wchar_t *input, size_t length, const wchar_t *format,...)
Definition: scanf.c:741
GLuint res
Definition: glext.h:9613
GLuint buffer
Definition: glext.h:5915
const GLubyte * c
Definition: glext.h:8905
GLuint GLsizei GLsizei * length
Definition: glext.h:6040
GLenum GLenum GLenum input
Definition: glext.h:9031
static va_list valist
Definition: printf.c:46
const WCHAR * str
#define WINAPIV
Definition: sdbpapi.h:64
_CRTIMP int __cdecl vswscanf(const wchar_t *, const wchar_t *, va_list)
Definition: fci.c:127
Definition: format.c:58