MATLAB同时读写同一个文件

时间:2016-01-07 23:57:18

标签: matlab

我想同时读取和写入同一个文件。这是一个简化的代码:

clc;
close all;
clearvars;

fd = fopen ('abcd.txt','r+'); %opening file abcd.txt given below


    while ~feof(fd)
        nline = fgetl(fd);
        find1 = strfind(nline,'abcd'); %searching for matching string
        chk1 = isempty(find1);
                if(chk1==0) 
                    write = '0000'; %in this case, matching pattern found
                    % then replace that line by 0000 
                    fprintf(fd,'%s \n',write);
                else 
                    continue;
                end


    end

档案 abcd.txt

abcde
abcd23
abcd2
abcd355
abcd65

我想在每行的字符串中找到文本abcd,并用0000替换整行。但是,文本文件 abcd.txt 没有变化。该程序不会在文本文件中写任何内容。

有人可以说读取每一行并逐行写一个单独的文本文件。但是,这种方法存在问题。在最初的问题中,不是找到匹配的文本`abcd,而是有数千个元素的字符串数组。在这种情况下,我想读取文件,解析文件以查找匹配字符串,根据条件替换字符串,转到下一次迭代以搜索下一个匹配字符串,依此类推。因此,在这种方法中,逐行读取原始文件并同时写入另一个文件不起作用。

另一种方法是读取内存中的整个文件,替换字符串并迭代。但我不太确定它将如何运作。另一个问题是内存使用情况。

有何评论?

1 个答案:

答案 0 :(得分:1)

您尝试做的事情无法以有效的方式实现。将Dim mHours As Long, mMinutes As Long, mSeconds As Long mSeconds = 12345 ' Sample data mHours = mSeconds \ 3600 mMinutes = (mSeconds - (mHours * 3600)) \ 60 mSeconds = mSeconds - ((mHours * 3600) + (mMinutes * 60)) MsgBox mHours & ":" & mMinutes & ":" & mSeconds 替换为abcde(应该对第一行执行)将要求所有剩余的文本向前移动,因为您删除了一个字符。

而是解决此读取一个文件并写入一秒,然后删除原始文件并重命名新文件。