3 * - By John Hodge (thePowersGang)
6 * - *scanf family of functions
12 int _vcscanf(int (*__getc)(void *), void *h, const char *format, va_list ap)
18 int _vsscanf_getc(void *h)
20 const char **ibuf = h;
21 return *(*ibuf)++; // Dereference, read, increment
24 int vscanf(const char *format, va_list ap)
26 return vfscanf(stdin, format, ap);
29 int vsscanf(const char *str, const char *format, va_list ap)
31 return _vcscanf(_vsscanf_getc, &str, format, ap);
34 int _vfscanf_getc(void *h)
36 return fgetc(h); // TODO: Handle -1 -> 0
39 int vfscanf(FILE *stream, const char *format, va_list ap)
41 return _vcscanf(_vfscanf_getc, stream, format, ap);
44 int scanf(const char *format, ...)
48 va_start(args, format);
49 rv = vfscanf(stdin, format, args);
53 int fscanf(FILE *stream, const char *format, ...)
57 va_start(args, format);
58 rv = vfscanf(stream, format, args);
62 int sscanf(const char *str, const char *format, ...)
66 va_start(args, format);
67 rv = vsscanf(str, format, args);