2011-06-30 66 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行結尾。