2016-06-24 4 views
0

上のデータを印刷:MATLABは:私は、関数の下有する特定の行

function [] = Write(iteration) 
status=close('all'); 
nomrep=num2str(iteration); 
fid=fopen('ID.dat','a'); 
frewind(fid); 
for l=1:iteration 
    line=fgetl(fid); 
end 
fprintf(fid,[nomrep,' \n']); 
status=fclose(fid); 
end 

IはWrite(15)ライン15日の初めに連続線でID.datとプリント2及び15を作成することを期待します。

しかし、これらの値は常にファイルの先頭に表示されます。

でも、私はfgetl(fid)を単独で試してみましたが、ループの代わりにwhileループが動作しませんでした。

私はそれの前にいくつかのダミースペースを入れる必要があります。サイドこの沿って、私は、各行に1〜5を印刷する必要がありますが、でも、これは動作しません

for i=1:5 Write(i); end

を実行します。

+0

オンライン私もそれが '関数[] = WRITE2(反復)( 'すべて')' 'ステータス=クローズ動作しない別の方法を発見しました。 nomrep = num2str(反復); fid = fopen( 'ID.dat'、 'w'); tline = fgets(fid); (l = 1の場合):反復 tline = fgets(fid); end fprintf(fid、[nomrep、 '\ n']); status = fclose(fid); end ' – Soyol

答えて

0

この行が問題である:あなたがファイルを開く

fid=fopen('ID.dat','w'); 

毎回、あなたは以前の内容を(それが'w'引数が何をするかである)上書きされます。 'w''a'(追加用)に変更すると、ファイルは1つの書き込みから次の書き込みへの内容を保持します。

+0

返信ありがとうございますが、それでも関数呼び出し' Write(8) 'の下で8行目に8を表示していません。 – Soyol

+0

ファイルが空であれば、matlabは行数をカウントしません私はダミーのアルファベットを置くことを考えました。それぞれの行に「a」と言って、私が好きな行に自分の望むパラメータを印刷します。 だから、私はすべての20行に '印刷以下: '反復= 20;' 'のFID =用のfopen( 'ID.dat'、 'W');' ' K = 1: 'fprintfのiteration'を 'end' ' status = fclose(fid); ' ' fclose( 'all'); ' そして、私はこの関数をWrite(と書いています。 8)、8行目に8を出力しません。また、すでに 'frewind(fid);で行ポインタをリセットしていますが、ID.datファイルの最後に8行を出力しません。 – Soyol

関連する問題