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 回答