2011-06-30 68 views
5

我想发送一个数组,它是[2×N]大一倍使用fprintf()命令的文本文件。我有在fprintf()问题不能识别新行命令(\n)或回车命令(\r)。我使用的代码是fprintf中不打印新行

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

你是否完成了文件的转储?我知道,在许多系统上,\ n是不够的,创造你问什么(所以,也许你需要做的\ r \ n)的 – KevinDTimm

+0

@KevinDTimm我不知道做什么转储的文件是(你能否以答案的形式解释),但使用\ r \ n工作。发布这个答案,我会选择它。 –

+0

转储的原因是验证文件实际上是否包含\ n。如果它(可能),那么我的评论/答案的第二部分适用。 – KevinDTimm

回答

9

我知道,在许多系统上,\ n是不够的,创造你问什么(所以,也许你需要做的\ r \ n)的

+0

'\ r \ n'确实只适用于Windows,其他大多数平台都使用'\ n'。 –

+0

@RemyLebeau - 然而,似乎这是解决问题的办法 – KevinDTimm

8

另一种解决方案是open文件在文本模式,这样MATLAB自动插入任何换行符\n字符之前在输出Windows系统中的回车\r

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

注意,这是有点不必要的,因为大多数编辑器(微软除外记事本)认出你nix/Mac/Windows行结尾。