I succeed in extracting the last two numeric columns by applying %*s to the first two string columns:
octave:76> f = fopen("test.txt","r") f = 4 octave:77> fgetl(f) ans = field1, field2, field3, field4 octave:78> c34 = fscanf(f,"%*s%*s%d,%f,",[2,Inf]); octave:79> c34' ans =
1 1 2 2 3 3
octave:80> fclose(f);
However, I’m not able to extract the strings accordingly.
With the “C” approach you used, I think you have to loop.
To answer Francesco's comment, fscanf allows for size specification without loop, but I don't know how to write the template indicating that commas (or something else) is a separator. Furthermore, even if the separator is whitespace as output I got a concatenated string instead of multiple fields...
Hm. I tried myself but can't get fscanf to read multiple lines...
Here is what I get:
===File ~/math/workarea/test.txt============================ field1, field2, field3, field4 A, a, 1, 1.0, B, b, 2, 2.0, C, c, 3, 3.0, ============================================================
octave> fid=fopen("test.txt"); octave> fgetl(fid); [v1, v2, v3, v4, count, errmsg]=fscanf(fid, "%s%s%d,%f,", "C") v1 = A, v2 = a, v3 = 1 v4 = 1 count = 4 errmsg = octave> fclose(fid);
So everything is nice and good, but fscanf stops at the first row of data...
Oh, and I also tried twith a template "%s%s%d,%f,\n", explicitely adding a newline at the end, because the Octave manual does not say what a "whitespace" is, but no change :(
-- Francesco Potortì (ricercatore) Voice: +39.050.621.3058 ISTI - Area della ricerca CNR Mobile: +39.348.8283.107 via G. Moruzzi 1, I-56124 Pisa Skype: wnlabisti (entrance 20, 1st floor, room C71) Web: http://fly.isti.cnr.it
_______________________________________________ Help-octave mailing list address@hidden https://lists.gnu.org/mailman/listinfo/help-octave
|