help-octave
[Top][All Lists]
Advanced

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

Re: Import large field-delimited file with strings and numbers


From: Ben Abbott
Subject: Re: Import large field-delimited file with strings and numbers
Date: Sun, 07 Sep 2014 16:03:03 -0400

On Sep 7, 2014, at 3:17 PM, Francesco Potortì <address@hidden> wrote:

>> 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 :(

The doc-string indicates that a 2nd input is needed for fgetl() to read more 
than one line.

 -- Built-in Function: STR = fgetl (FID)
 -- Built-in Function: STR = fgetl (FID, LEN)
     Read characters from a file, stopping after a newline, or EOF, or
     LEN characters have been read.  The characters read, excluding the
     possible trailing newline, are returned as a string.

     If LEN is omitted, 'fgetl' reads until the next newline character.

     If there are no more characters to read, 'fgetl' returns -1.

     To read a line and return the terminating newline see 'fgets'.

     See also: fgets, fscanf, fread, fopen.

Ben




reply via email to

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