thron of three
thron of three

Reputation: 521

fprintf not printing new line

I am trying to send an array that is [2 x N] doubles large to a text file using the fprintf() command. I am having problems in that fprintf() is not recognizing the new line command (\n) or the carriage return command (\r). The code I am using is

fid = fopen([Image.Dir,'CtlPts_',Image.Files{k},'.txt'],'w');
fprintf(fid,'%.4f\t%.4f\n',control_points{k});
fclose(fid);

where the data I am trying to print is in the cell control_points{k}.

The tab gets printed fine, but everything in the text file gets printed on one line, so this is why I am assuming that it is ignoring my new line character.

Is there something wrong with my syntax that I am not seeing?

Upvotes: 5

Views: 32473

Answers (2)

Amro
Amro

Reputation: 124563

An alternative solution is to open the file in text mode, that way MATLAB automatically inserts a carriage return \r before any newline \n character in the output on Windows systems:

fid = fopen('file.txt', 'wt');
fprintf(fid, '%f\t%f\n', rand(10,2));
fclose(fid);

Note that this is somewhat unnecessary, since most editors (with the exception of Microsoft Notepad) recognize Unix/Mac/Windows line endings.

Upvotes: 9

KevinDTimm
KevinDTimm

Reputation: 14376

I know that on many systems, \n is not enough to create what you're asking for (and so, maybe you have to do \r\n)

Upvotes: 10

Related Questions