5
function [org_data] = file_manipulation(in_fname, txt_fname, mat_fname)
    org_data = round(load(in_fname));

    fid = fopen(txt_fname,'wt+');
    student_id = '9900';
    txt = [txt_fname ' : ' student_id '\nDate of creation:' datestr(now,'dd/mm/yyyy')]; 
    fprintf(fid,'%s',txt);

end

生成的文件不是插入换行符,而是:

C:\w2\test1.txt : 9900\nDate of creation:30/05/2012

我的代码有什么问题?

4

3 回答 3

5

用于sprintf制作这些字符串:

fprintf(fid, sprintf('%s : %s\nDate of creation: %s', txt_fname, student_id, datestr(now,'dd/mm/yyyy')));

您现在的操作方式是将反斜杠视为文字。

于 2012-05-30T17:48:39.650 回答
1

在将 '\n' 插入字符串之前将其转换为双精度:

fid = fopen('my_file.txt', 'w');
fwrite(fid, ['First line' double(sprintf('\n')) 'Second line'])
fclose(fid);

感谢 Adob​​e Research 的研究科学家 Franck Dernoncourt。

于 2018-01-01T07:53:05.337 回答
0

它对我有用

fwrite(fos, double(sprintf('\n')));

此外,Matlab 2019 版本之后的版本,为避免编辑器出现警告,请使用

fwrite(fos, newline); 
于 2021-11-22T08:03:42.340 回答