我有这个程序,我在其中打开一个文件并在其中写入数据点,但问题是我必须在循环内执行此操作。它会:
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+
加上没有帮助,它会在程序运行完毕后继续追加并且永远不会更新。
现在我正在使用+然后我在完成运行后手动删除该文件的内容。在循环外写入给我错误。 有没有办法在每次运行后清除文件?
答案 0 :(得分:0)
我认为如果您只使用w+
打开一次,就可以多次写入。第一次将是文件的开头,之后将附加数据。
在循环外面打开和关闭。在循环之前你放
fid=fopen('myfile2.txt','w+')
Fid2=fopen('myfile3.txt','w+')
你可以在循环后关闭
fclose(fid)
fclose(Fid2)
如果这确实不起作用,那么我建议在使用w'
循环之前打开文件一次,这将清空内容。然后,您可以在循环内使用a+
来附加数据。每次都会有一个干净的文件。