3 /* fscanf( FILE *, const char *, ... )
5 This file is part of the Public Domain C Library (PDCLib).
6 Permission is granted to use, modify, and / or redistribute at will.
14 int fscanf( FILE * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, ... )
18 va_start( ap, format );
19 rc = vfscanf( stream, format, ap );
27 #include <_PDCLIB_test.h>
31 char scanstring[] = " 1 23\00045\000\00067 ";
33 void scantest( int testnr, FILE * fh, size_t position, char const * format,
34 int expected_fscan_rc, char const * expected_fscan_output, size_t expected_fscan_length,
35 int expected_sscan_rc, char const * expected_sscan_output, size_t expected_sscan_length )
38 printf( "Test %d\n", testnr );
39 TESTCASE( memset( buffer, -1, 15 ) == buffer );
40 TESTCASE( fseek( fh, position, SEEK_SET ) == 0 );
41 TESTCASE( fscanf( fh, format, buffer ) == expected_fscan_rc );
42 TESTCASE( memcmp( buffer, expected_fscan_output, expected_fscan_length ) == 0 );
43 TESTCASE( memset( buffer, -1, 15 ) == buffer );
44 TESTCASE( sscanf( scanstring + position, format, buffer ) == expected_sscan_rc );
45 TESTCASE( memcmp( buffer, expected_sscan_output, expected_sscan_length ) == 0 );
51 TESTCASE( ( fh = fopen( "testfile", "w+" ) ) != NULL );
52 TESTCASE( fwrite( scanstring, 14, 1, fh ) == 1 );
55 /* %14c - full scan */
56 scantest( 1, fh, 0, "%14c",
57 1, " 1 23\00045\000\00067 \377", 15,
60 /* %c - default to one, reading whitespace */
61 scantest( 2, fh, 0, "%c",
65 /* %1c - reading zero byte */
66 scantest( 3, fh, 9, "%1c",
70 /* %0c - NOT reading EOF */
71 scantest( 4, fh, 13, "%0c",
75 TESTCASE( fclose( fh ) == 0 );
76 //TESTCASE( remove( "testfile" ) == 0 );