在Matlab中将新行写入文本文件

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

我的代码有什么问题?

3个回答

5
使用sprintf函数来生成这些字符串:
fprintf(fid, sprintf('%s : %s\nDate of creation: %s', txt_fname, student_id, datestr(now,'dd/mm/yyyy')));

你现在的做法是将反斜杠视为字面量。

换句话说,\n 是由 sprintf 函数族解释的,而不像其他正常语言一样在预处理器级别解释。 - Peter
抱歉,我不明白 - 即使您不使用变量?(我刚刚编辑了答案,将双引号替换为单引号)。 - Ansari
对不起,这条评论与主题无关,我已将其删除。 - Day_Dreamer
它对我不起作用,但我找到了另一个解决方案,建议使用\r\n而不是\n,这对我有效。 - Maystro

1

在将其插入字符串之前,将“\n”转换为double:

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

感谢Adobe研究部门的研究科学家Franck Dernoncourt。

0

对我来说使用它是有效的

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

此外,在Matlab 2019版本之后,为了避免警告提示,建议使用以下方法保存编辑器:
fwrite(fos, newline); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接