# HG changeset patch # User John W. Eaton # Date 1337794584 14400 # Node ID 757f729fd41dc4fed00342050f25448650d5be36 # Parent d95e719ef1081d81fdd1259161990cc17aaf8d2d skip leading whitespace for scanf %i format * oct-stream.cc (octave_scan_1): Skip leading whitespace for %i format. * test_io.m: New tests for scanf. diff -r d95e719ef108 -r 757f729fd41d src/oct-stream.cc --- a/src/oct-stream.cc Mon May 21 06:28:32 2012 -0400 +++ b/src/oct-stream.cc Wed May 23 13:36:24 2012 -0400 @@ -1107,9 +1107,12 @@ case 'i': { - int c1 = is.get (); - - if (! is.eof ()) + int c1 = EOF; + + while (is && (c1 = is.get ()) != EOF && isspace (c1)) + /* skip whitespace */; + + if (c1 != EOF) { if (c1 == '0') { diff -r d95e719ef108 -r 757f729fd41d test/test_io.m --- a/test/test_io.m Mon May 21 06:28:32 2012 -0400 +++ b/test/test_io.m Wed May 23 13:36:24 2012 -0400 @@ -250,6 +250,12 @@ %!assert (sscanf (['ab'; 'cd'], '%s'), 'acbd') +%!assert (sscanf ('02:08:30', '%i:%i:%i'), [2; 0]); +%!assert (sscanf ('02:08:30', '%d:%d:%d'), [2; 8; 30]); + +%!assert (sscanf ('0177 08', '%i'), [127; 0; 8]); +%!assert (sscanf ('0177 08', '%d'), [177; 8]); + %!test %! [val, count, msg, pos] = sscanf ("3I2", "%f"); %! assert (val, 3);