Rev 8687 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
8687 | turbocat | 1 | #include |
8718 | turbocat | 2 | #include |
3 | #include |
||
8687 | turbocat | 4 | |
8718 | turbocat | 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 |
||
8687 | turbocat | 7 | { |
8718 | turbocat | 8 | FILE *f = (FILE *)obj; |
9 | int ch = fgetc(f); |
||
10 | |||
11 | //printf("getc '%c'[%d];", ch, ch); |
||
12 | |||
13 | return ch; |
||
14 | } |
||
15 | |||
16 | void virtual_ungetc_file(void *sp, int c, const void *obj) |
||
17 | // if can, one step back savepoint in s |
||
18 | { |
||
19 | FILE *f = (FILE *)obj; |
||
20 | |||
21 | if (f) ungetc(c, f); |
||
22 | } |
||
23 | |||
24 | |||
25 | int vfscanf ( FILE * stream, const char * format, va_list arg ) |
||
26 | { |
||
27 | return format_scan(stream, format, arg, &virtual_getc_file, &virtual_ungetc_file); |
||
28 | }; |
||
29 | |||
30 | int fscanf ( FILE * stream, const char * format, ...) |
||
31 | { |
||
32 | va_list arg; |
||
33 | int n; |
||
8687 | turbocat | 34 | va_start(arg, format); |
8718 | turbocat | 35 | |
8687 | turbocat | 36 | n = vfscanf(stream, format, arg); |
8718 | turbocat | 37 | |
8687 | turbocat | 38 | va_end(arg); |
39 | return n; |
||
40 | } |
||
41 |