2011-06-30 22 views
5

fprintf()コマンドを使用して、2倍の大きさの配列をテキストファイルに送信しようとしています。 fprintf()が新しい行コマンド(\n)またはキャリッジリターンコマンド(\r)を認識しないという問題があります。私が使っているコードは、私が印刷しようとしていたデータがセルcontrol_points{k}であるfprintf改行がありません

fid = fopen([Image.Dir,'CtlPts_',Image.Files{k},'.txt'],'w'); 
fprintf(fid,'%.4f\t%.4f\n',control_points{k}); 
fclose(fid); 

です。

タブはきれいに印刷されますが、テキストファイルのすべてが1行に印刷されるため、改行文字を無視していると仮定しています。

私の見た目には何か問題がありますか?

+2

ファイルをダンプしましたか?私は多くのシステムで、\ nはあなたが求めているものを作成するのに十分ではないことを知っています(そしておそらくあなたは\ r \ nをしなければなりません)。 – KevinDTimm

+0

@KevinDTimmファイルのダンプは何ですか?あなたは答えの形式で説明することができますが)\ r \ nを使って作業しました。これを回答として投稿し、私はそれを選択します。 –

+0

ダンプの理由は、ファイルに実際に\ nが含まれていることを確認することです。もしそうなら(おそらく)、コメント/回答の第2部分が適用されます。 – KevinDTimm

答えて

9

は、私は多くのシステムでは、\ nは十分ではありませんが、あなたが求めている(ので、多分あなたが\ r \ nをしなければならない)

+0

'\ r \ n'は実際にはWindowsにのみ適用され、他のほとんどのプラットフォームでは' \ n'が使用されます。 –

+0

@RemyLebeau - それでも、これは問題の解決策だったようです – KevinDTimm

8

代替ソリューションはopenファイルにあるものを作成することを知っていますこれは、マイクロソフトの例外を除いてほとんどのエディタ(以降、やや不必要であることを

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

注:テキストモード、MATLABは、自動的にWindowsシステムの出力のいずれかの改行\n文字の前にキャリッジリターン\rを挿入している方法で、メモ帳)はUを認識するnix/Mac/Windowsの行末。

関連する問題