有没有办法在写入数据后清除文件上下文?

时间:2013-03-06 23:31:48

标签: file matlab cmd

我有这个程序,我在其中打开一个文件并在其中写入数据点,但问题是我必须在循环内执行此操作。它会:

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+加上没有帮助,它会在程序运行完毕后继续追加并且永远不会更新。

现在我正在使用+然后我在完成运行后手动删除该文件的内容。在循环外写入给我错误。 有没有办法在每次运行后清除文件?

1 个答案:

答案 0 :(得分:0)

我认为如果您只使用w+打开一次,就可以多次写入。第一次将是文件的开头,之后将附加数据。

在循环外面打开和关闭。在循环之前你放

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

你可以在循环后关闭

fclose(fid)
fclose(Fid2)

如果这确实不起作用,那么我建议在使用w'循环之前打开文件一次,这将清空内容。然后,您可以在循环内使用a+来附加数据。每次都会有一个干净的文件。