fprintf не печатает новую строку - PullRequest
5 голосов
/ 30 июня 2011

Я пытаюсь отправить массив, размер которого [2 x N] удваивается, в текстовый файл с помощью команды fprintf(). У меня проблемы с тем, что fprintf() не распознает команду новой строки (\n) или команду возврата каретки (\r). Я использую код

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

где данные, которые я пытаюсь распечатать, находятся в ячейке control_points{k}.

Вкладка печатается нормально, но все в текстовом файле печатается в одну строку, поэтому я предполагаю, что она игнорирует мой символ новой строки.

Что-то не так с моим синтаксисом, которого я не вижу?

Ответы [ 2 ]

10 голосов
/ 30 июня 2011

Я знаю, что во многих системах \ n недостаточно для создания того, что вы запрашиваете (и поэтому, возможно, вам придется делать \ r \ n)

9 голосов
/ 30 июня 2011

Альтернативное решение - открыть файл в текстовом режиме , таким образом MATLAB автоматически вставляет возврат каретки \r перед любым символом новой строки \n в выходных данных в Windows системы:

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

Обратите внимание, что в этом нет необходимости, поскольку большинство редакторов (за исключением Microsoft Notepad) распознают окончания строк Unix / Mac / Windows.

...