From help-octave-request at bevo dot che dot wisc dot edu Wed Sep 6 19:29:36 1995 Subject: fgetl.m From: "Wonkoo Kim" To: "John Eaton" , "Eyal Doron" Cc: "Octave Users" Date: Wed, 06 Sep 95 20:04:25 -0400 > Date: Wed, 06 Sep 95 15:53:16 -0500 > From: "John Eaton" > Cc: help-octave at bevo dot che dot wisc dot edu > Subject: Re: Reading to end-of-file (fgetl.m) > > I didn't see the file fgetl.m, Sorry, I posted to the wrong (old?) list (help-octave at che dot utexas dot edu) and hence it was not posted. I didn't realize that the octave list addr was changed, or did I have a wrong addr? (Did I miss some announcement?) Anyway, I attached my version of fgetl.m below (bug fixed). > but the functions fgetl and fgets will > both be available as built-in functions in the next release. Then you > can write something like > > while (isstr (s = fgetl ("file"))) > printf ("%s\n", s); > end > > to read all the lines from a file. No error message will be printed > when the end of the file is reached. > > You will also be able to limit the number of characters that are read > by adding a second parameter to fgetl/fgets. For example, > > while (isstr (s = fgetl ("file", 10))) > printf ("%s\n", s); > end > > reads the password file in chunks of at most 10 characters. > > And no, I don't have a date set for 1.2, but I'm working on it. Also, > I don't plan to make a 1.1.2 release because it would take too much > time away from working on 1.2. Thanks, I hope to see v1.2 (for OS/2) soon. :-) ------------------- CUT HERE ------------------- function [linestr] = fgetl (infile) % Octave 1.1.x doesn't have fgetl(). So this is added... % % Syntax: [linestr] = fgetl (infile) % % Return: Read a line of strings until a new line code from infile. % Returns -1 if end-of-file occured. % % Wonkoo Kim (wkim+ at pitt dot edu), May 2, 1995 n = 0; linestr = []; while (1) [ch, count] = fread (infile, 1, 'uchar'); if count == 0 n = -1; break; endif if (ch == 13) % '\r' continue; endif if (ch == 10) % '\n' break; endif n++; linestr(n) = ch; endwhile if n < 0 linestr = n; else linestr = setstr(linestr); endif endfunction ------------------- CUT HERE ------------------- //-------------------------------------------------------------------- // Wonkoo Kim // wkim+ at pitt dot edu