octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Bug in 2.1.30 and 2.1.31 -- fscanf in "C" compatibility mode


From: John W. Eaton
Subject: Bug in 2.1.30 and 2.1.31 -- fscanf in "C" compatibility mode
Date: Thu, 20 Jul 2000 14:22:58 -0500 (CDT)

On 20-Jul-2000, Joao Cardoso <address@hidden> wrote:

| The following ilustrate the bug on a two line file:
| 
| ---po----
| One: 1
| Two: 2
| ---------
| 
| octave:1> f=fopen("po","r");
| octave:2> a=fscanf(f,"One: %d\n")
| a = 1
| octave:3> ftell(f)
| ans = 7
| octave:4> a=fscanf(f,"Two: %d\n")
| a = 2
| octave:5> frewind(f)
| ans = 0
| octave:6> a=fscanf(f,"One: %d\n","C")
| a = 1
| octave:7> ftell(f)
| ans = -1
| octave:8> frewind(f)
| ans = 0
| octave:9> a=fscanf(f,"One: %d","C")
| a = 1
| octave:10> ftell(f)
| ans = -1
| 
| And thus the second file line can't be read.
| 
| If the file is read line by line with 'fgetl' and than 'sscanf',
| everything is OK.

I think the following patch should fix this problem.  I've checked it
in to the CVS archive.

Thanks,

jwe


2000-07-20  John W. Eaton  <address@hidden>

        * oct-stream.cc (octave_base_stream::oscanf): Advance to next
        format element before attempting to pick up any trailing stuff.


Index: oct-stream.cc
===================================================================
RCS file: /usr/local/cvsroot/octave/src/oct-stream.cc,v
retrieving revision 1.65
diff -u -r1.65 oct-stream.cc
--- oct-stream.cc       2000/03/31 23:33:26     1.65
+++ oct-stream.cc       2000/07/20 19:18:12
@@ -1897,6 +1897,9 @@
              if (ok () && len > nconv)
                {
                  octave_value tmp;
+
+                 elt = fmt_list.next ();
+
                  do_oscanf (elt, tmp);
                }
            }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]