MATLAB替换TXT文件中的指定行的全部内容
本文说明:
本文是在“利用matlab把指定字符串在原位置替换为新的字符串(替换txt文件中的部分数据)”一文,
原文链接:https://blog.csdn.net/u013614126/article/details/19681665
的基础上,针对其未解决的替换txt某行全部内容fseek函数的缺陷进行讨论,提出问题的办法(改进)。
问题提出
在上述文章章末这样写道:
根据Matlab的帮助文件,实现重写有两种办法,一种是替换的内容的长度等于原来一行内容长度的时候,可以精确替换,另一种是替换的内容的长度大于原来一行内容长度的时候,这一行之后的所有行都要重新写。
在本人学习研究之后,发现若txt文档很大(长),替换的内容的长度大于原来一行内容长度的时候,这一行之后的所有行都要重新写,必然很繁琐,且耗时。故提出以下解决办法,即使替换内容大于原先行长度,也只需要重写指定行内容即可。
问题解决
- 第一步要求:
将txt文件中的替换指定行后空一行,保存。 - 第二步,写MATLAB程序:
clc;
clear all;
close all;
replaceLine = 5; %指定的替换行,将第5行替换
myformat = '%s\n'; %输出格式,注意:\n不能少
newData ='LAY'; %替换内容
fid = fopen('NEW.txt','r+');
%txt在MATLAB工作目录下,直接写文件名和后缀即可,否则请写全路径,如:fid = fopen('C:\NEW.txt','r+');
for k=1:(replaceLine-1)
fgetl(fid);
end
% 设置光标位置
fseek(fid, 0, 'cof'); %在文件当前位置光标向后移动0字节
fprintf(fid, myformat, newData); %重写该行
fclose(fid);
3.第三步 运行