【问题标题】:writing new line into text file in matlab在matlab中将新行写入文本文件
【发布时间】:2012-06-04 23:48:11
【问题描述】:
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

我的代码有什么问题?

【问题讨论】:

    标签: matlab file-io newline


    【解决方案1】:

    使用sprintf 制作这些字符串:

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

    您现在的做法是将反斜杠视为文字。

    【讨论】:

    • 换句话说,\n 由 sprintf 系列函数解释,而不是像其他健全的语言那样在预处理器级别。
    • 对不起,我不明白——即使你不使用变量? (我刚刚编辑了用单引号替换双引号的答案)。
    • 对不起。此评论不相关。我删了。
    • 它不适用于我,但我找到了另一种解决方案,说放 \r\n 而不是 \n 并且它适用于我
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      它适合我使用

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

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

      fwrite(fos, newline); 
      

      【讨论】: