Clear Filters
Clear Filters

use fprintf to write to a new file

2 views (last 30 days)
ERC
ERC on 24 Jul 2013
How do I write the data of one file ('source.dat') to another ('result.dat') using fprintf?
I tried,
fid=fopen('source.dat')
%I then manipulate the data of fid to my liking
result=fopen('result.dat','w')
fprinf(fid, desired format here)
Why am I getting an out-of-range error?
  1 Comment
dpb
dpb on 24 Jul 2013
Need the actual code and the error directly instead of trying to tell us what it was...that'll include --- oh, I see it if what you actually did is identically what you posted...see answers.

Sign in to comment.

Accepted Answer

dpb
dpb on 24 Jul 2013
Edited: dpb on 24 Jul 2013
...first I opened my source file via
fid=fopen('source.dat')
data=fscanf(fid, ... % get the data
fid=fclose(fid); % done w/ that file...
data=sqr(data); % do something to it
fid=fopen('results.dat','w'); % a new output file
fprintf(fid, fmt, data); % write it out
fid=fclose(fid); % close it now, too...
If you need to read and write to two (or more) files simultaneously, you must keep unique variables for them--fid1 and fid2 are popular as are things like fhi and fho (file handle in/out). If you ever do something like
fid=fopen('source.dat');
...
fid=fopen('output.dat','w');
you've just trashed the handle to source.dat and can no longer get to it--it's in limbo as it's open but your program has no valid way to communicate with it and you can't even close it cleanly other than by brute force hammer of
fclose('all')
or when Matlab itself finally closes and releases open handles.
doc fopen % and friends

More Answers (1)

dpb
dpb on 24 Jul 2013
fid=fopen('source.dat')
% do some stuff to the (presumed read but unshown) data from 'source.dat'
result=fopen('result.dat','w')
fprinf(fid, desired format here)
fid is still the handle for 'source.dat' or is invalid if you have done an
fclose(fid)
OTOMH I don't recall what that error message is, would think it would be invalid handle or somesuch, however, not some out-of-range error.
The handle to 'result.dat' is the variable result as you've written it above so the print statement (Fortran syntax :) )/fprintf call should be
fprintf(result, fmt, data)
NB: there's no data in the call above to be written.
But, while those are problems, w/o the actual code and specific error can't see w/ the cloudy crystal ball what actually was the cause of the specific error or what it means.
  1 Comment
ERC
ERC on 24 Jul 2013
I am still a little confused. Let me re-phrase my question:
So, first I opened my source file via
fid=fopen('source.dat')
How do I print the data in fid to a new file via fprintf?
Thanks.

Sign in to comment.

Categories

Find more on Programming in Help Center and File Exchange

Tags

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!