2013-03-06 60 views
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+ plus並沒有幫助,並且它在程序運行完成後會一直追加並永不更新。

現在我正在使用a +,然後手動刪除該文件的內容後,我完成了運行..循環外給我錯誤。 有沒有辦法在每次運行後清除文件?

回答

0

我想如果你只用w+打開一次,你可以寫多次。第一次將是文件的開始,之後數據將被追加。

在環路外打開和關閉。在循環之前你把

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

而且可以循環

fclose(fid) 
fclose(Fid2) 

之後把閉幕如果真的不行,那麼我建議,一旦循環之前w'打開文件,該文件將清空內容。然後你可以在循環內使用a+來追加數據。每次你都會有一個乾淨的文件。

+0

當我把它放在外面時,只保存文件中當循環達到極限時的最後一點 – user1850791 2013-03-07 00:55:57

+0

我已經更新了答案,因爲那裏有更好的格式化選項 – 2013-03-07 01:22:13

相關問題