关于matlab,\n的问题

clc,clear
a=rand(500,1000);
c=randi([10,100],1000,1);
b=randi([100,200],500,1);
fid=fopen('data1.txt','w');
fprintf(fid,'%f\n',a);
fprintf(fid,'%c\n','~');
fprintf(fid,'%4d\n',c);
fprintf(fid,'%c\n','~');
fprintf(fid,'%4d\n',b);
fclose(fid);

这个程序里面的‘%4d\n’等里面的\n是换行的意思吗?如果是,为什么打开txt文件以后还是没有换行的效果呢?而且如果我去掉\n以后,txt文件就打不开了,这是为什么……

1、你是用记事本打开文件的吧?如果用其它编辑器(例如Word、UltraEdit)打开,是可以看到换行的效果的。

 

2、把

fid=fopen('data1.txt','w');

改成

fid=fopen('data1.txt','wt');

可以达到换行的效果。

 

你原来的写法是按照二进制模式打开文件的,后面那个建议的写法是按照文本模式打开。在Windows系统上,按文本模式打开文件的主要作用是,在写入换行符(\n)的时候,同时会插入一个回车符(\r\n),而如果是单独的换行符,记事本就只会显示成一个小的黑方块。

 

3、另一种改法是,打开文件的方式不变,但把 \n 改为 \r\n。显然这种方法更繁琐。

 

4、你说的“去掉\n以后,txt文件就打不开了”,应该不会。不过,也可能是行太长导致显示存在问题。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-04
clc;clear;
tic
%a=rand(500,1000);% 源程序中该矩阵太大,略微降低了,方法一样
a=rand(5,10);
c=randi([10,100],1000,1);
b=randi([100,200],500,1);
fid=fopen('data1.txt','w');
%% 输出矩阵a
[sa,sb]=size(a);
for i=1:sa
for j=1:sb
fprintf(fid,'%8.6f \n',a(i,j));
end
% If you plan to read the file with Microsoft® Notepad,
% use '\r\n' instead of '\n' to move to a new line.
fprintf(fid,'\r\n');
end
% 添加分隔符
for j=1:100
fprintf(fid,'%c\n','~');
end
fprintf(fid,'\r\n');
%% 输出矩阵c
fprintf(fid,'%4d\r\n',c);
% 添加分隔符
for j=1:100
fprintf(fid,'%c\n','~');
end
fprintf(fid,'\r\n');
%% 输出矩阵b
fprintf(fid,'%4d\r\n',b);
fclose(fid);
toc
第2个回答  2015-11-04
clc,clear
a=rand(500,1000);
c=randi([10,100],1000,1);
b=randi([100,200],500,1);
fid=fopen('data1.txt','w');
fprintf(fid,'%f\t\n',a);
fprintf(fid,'%c\t\n','~');
fprintf(fid,'%4d\t\n',c);
fprintf(fid,'%c\t\n','~');
fprintf(fid,'%4d\t\n',b);
fclose(fid);
第3个回答  2014-08-04
是代表了换行,看到txt中的大黑点了吗?那个就是一个换行符
相似回答