0

ファイルを開いてデータポイントを書き込むこのプログラムがありますが、問題はループ内でそれを行う必要があることです。それは行く:

file1=importdata('myfile.txt','%s')

for k=1:1:128

fid=fopen('myfile2.txt','w+') % I write input to that file and pass it to my exe file

fprintf(fid,'input1')

fprintf(fid,'input2')

fprintf(fid,'input3')

 the 4th input (input4) is being taken from a diff file.txt and 

input4=sscanf(file1{k},'%s')

Val=str2double(input4)

fprintf(fid,'%.3f',Val)

fclose(fid)

[status,result]=system('command<myfile2.txt') 

M= sscanf(result,'%s')

more_result=[ Val M]

Fid2=fopen(myfile3.txt,'w+')

frpintf(Fid2,'%s', more_result)

end

これは、コードの漠然とした考えです。次にsscanf、必要な特定の値 (M) を取得する結果を取得します。

Val と Z を別のファイルに書き込みたいのですがfopen(fid,'w+')、ループ内で更新し続けるため、ファイル内のそれぞれの最後の値しか取得できません。プラスを使用a+しても役に立たず、プログラムの実行が完了した後も追加され続け、更新されません。

今、私は a+ を使用しています。実行が完了したら、そのファイルの内容を手動で削除します。ループの外に書き込むとエラーが発生します。各実行後にファイルをクリアする方法はありますか?

4

1 に答える 1

0

で一度開くだけでw+、何度でも書けると思います。最初はファイルの先頭で、その後にデータが追加されます。

オープニングとクロージングをループの外に置きます。あなたが置くループの前に

fid=fopen('myfile2.txt','w+')
Fid2=fopen('myfile3.txt','w+')

そして、ループの後に閉じることができます

fclose(fid)
fclose(Fid2)

これが本当にうまくいかない場合はw'、内容を空にするループの前に一度ファイルを開くことをお勧めします。次にa+、ループ内で使用してデータを追加できます。毎回クリーンなファイルが作成されます。

于 2013-03-07T00:31:17.597 に答える