如何在MATLAB中写入文本文件?

时间:2012-03-07 08:36:52

标签: string matlab

我需要从index.html文件的每一行中删除'index.html'字符串....

我需要在MATLAB中完成。

这是我到目前为止所拥有的......

我不知道在修改它之后如何写行,回到html文件中的同一行。

fid=fopen('index.html');

while ~feof(fid)

    tline=fgetl(fid);

if ~isempty(strfind(tline,'index.html'))
    remline=strrep( tline ,'index.html','');

**% fprintf(fid,remline);
%  fprintf('\n')**

end

end

更新

这个解决方案对我有用:

function WriteToFile(filename)



fid = fopen(filename, 'r+');
fid2 = fopen('index.txt', 'w');


while ~feof(fid)

    tline=fgetl(fid);

    if ~isempty(strfind(tline,'index.html'))
        remline=strrep(tline,'index.html','');

        fprintf(fid2, '%s\r\n', remline);
    else
        fprintf(fid2, '%s\r\n', tline);
    end
end

fclose(fid);
fclose(fid2);

delete(filename)
keyboard
movefile('index.txt','index.html')

5 个答案:

答案 0 :(得分:2)

这是一个示例函数:

function WriteToFile(filename, text)
%open file with write permission
fid = fopen(filename, 'w');
%write a line of text
fprintf(fid, '%d\n', text);
%close file
fclose(fid);

答案 1 :(得分:2)

将%d替换为%s用于实际文本

答案 2 :(得分:1)

如果您正在使用文本文件,那么研究filereadtextscan等功能的文档会很有用。你正在采取的方法没有任何问题(好吧,除了显而易见的事情,你还没有使用它)但是它比它需要的更费力。

我希望如果您将文件读入Matlab字符串(空间限制允许),然后在其上运行正则表达式,您可以在oner中进行替换。

答案 3 :(得分:1)

您对fopen()的调用会打开文件以供阅读,这就是fprintf()调用失败的原因。但是,这种方法不会按原样运行,因为您正在更改文本行的长度。 我建议你从输入文件中读取每一行,对其进行更改,然后将其写入临时输出文件。处理完每个输入行后,关闭这两个文件,删除输入文件,并将临时输出文件重命名为原始输入文件名。

或者,正如HPM建议的那样,将所有文件一次性读入内存,处理每一行,然后将所有内容写入输入输入文件的顶部。

答案 4 :(得分:0)

修改Niko的答案(用%s替换%d)将实际文字放入文件a1.m:

fid = fopen('a1.m','w');%open file for writing
fprintf(fid, '%s\n', 'some_text');%write a line of text
fclose(fid);%close file