Why is one variable not printing to my text correctly?

4 views (last 30 days)
I use the following code, but when I open changing.txt, it shows:
547.0 0.0000 547.0 360.0 iri_pd_lon280.txt
The second variable '0.0000' should be '0.3720'.
calc_alt=547.5000;
calc_W=0.3720;
alt_Bw=547.5000;
alt_nm=360;
filenames='iri_pd_lon280.txt';
fmt='%8.1f %.4f %8.1f %8.1f %s\r\n';%format for fprint
fileID=fopen('changing.txt','a');
fprintf(fileID,fmt, [calc_alt calc_W alt_Bw alt_nm filenames]);%write these values at the end of the file
fclose (fileID);

Accepted Answer

dpb
dpb on 18 Mar 2017
Bad syntax... [calc_alt calc_W alt_Bw alt_nm filenames] you're concatenating unlike variables and passing that to fprintf
Lose the braces, use a list of arguments instead--
fprintf(fileID,fmt, calc_alt, calc_W, alt_Bw, alt_nm, filenames)
and nirvana will ensue...
BTW, there's a repmat "trick" for writing format strings that's very handy to have seen--
fmt=[repmat(['%8.1f %.4f' repmat('%8.1f,1,2) '%s\n'];
not that bad here, but when numbers get to be much larger it can be a real boon...
BTW2: '\n' is enough on its own in virtually every case any more; adding both slows things down for no real benefit in general.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!