Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
647 | andrew_pro | 1 | #include |
6431 | siemargl | 2 | #include |
3 | #include |
||
4 | |||
5 | int virtual_getc_file(void *sp, const void *obj) |
||
6 | // get next chat from file obj, save point is ptr to string char ptr |
||
647 | andrew_pro | 7 | { |
6431 | siemargl | 8 | FILE *f = (FILE *)obj; |
9 | |||
10 | return fgetc(f); |
||
647 | andrew_pro | 11 | } |
6412 | siemargl | 12 | |
6431 | siemargl | 13 | void virtual_ungetc_file(void *sp, int c, const void *obj) |
14 | // if can, one step back savepoint in s |
||
647 | andrew_pro | 15 | { |
6431 | siemargl | 16 | FILE *f = (FILE *)obj; |
17 | |||
18 | if (f) ungetc(c, f); |
||
647 | andrew_pro | 19 | } |
6431 | siemargl | 20 | |
21 | |||
22 | int vfscanf ( FILE * stream, const char * format, va_list arg ) |
||
23 | { |
||
24 | return format_scan(stream, format, arg, &virtual_getc_file, &virtual_ungetc_file); |
||
25 | }; |
||
26 | |||
27 | int fscanf ( FILE * stream, const char * format, ...) |
||
28 | { |
||
29 | va_list arg; |
||
30 | int n; |
||
31 | va_start(arg, format); |
||
32 | |||
33 | n = vfscanf(stream, format, arg); |
||
34 | |||
35 | va_end(arg); |
||
36 | return n; |
||
37 | } |
||
38 |