On 2/5/2013 12:55 AM, Bruno Luong wrote: > dpb <email@example.com> wrote in message <firstname.lastname@example.org>... > >> >> The killer w/ C's i/o functions is their complete inability to >> "understand" fix-width fields--it's simply absurd that one can't read >> the equivalent of a Fortran FORMAT(5I1) w/ a record of '101 1' and >> reliably get 1,0,1,0,1 returned in appropriate variables. In Matlab >> (and C) that's nearly impossible w/o special handling. >> > > What's problem? The fixed format reading is just take the right column > of the char matrix. OK you have to count the column, but that's really a > big deal?
The problem is there's no way to write a format string that will parse the above example input string correctly w/o actually doing the character manipulation directly.
Yes, that's a big deal for large files in terms of overhead plus the necessity of having to write special code to handle it when it should be a trivial formatting operation.
It's a remnant of the design of C that didn't really consider i/o to be terribly important it appears...
> Writing with fixed-format with MATLAB is another matter (there is simply > no easy way of doing it).
I keep hearing this, but on output the fixed-width fields do work at least reasonably well--there have been several threads on the subject I can recall over the last several months or so but I can't remember a one that wasn't solvable pretty easily w/ just the proper formatting strings.
Output works reasonably well; fixed-width non-delimited input is just broken (by C Library definition which underlies the Matlab formatted i/o implementation).