如何查询txt文件里某个内容的所在行

问题遇到的现象和发生背景 @叶不伤 matswmm使用心路二 查询某个内容所在的行的部分
用代码块功能插入代码,请勿粘贴截图
%% 查询某个内容所在的行
fn=input('Input file address=3tanks.txt','s');  %填写文件地址
Origin= fopen(fn,'r');
title=("[SUBCATCHMENTS]");
len=length(title); %测量需要获取的信息长度
q=zeros(len,2); %第一列用来储存数据起始,第二列储存数据结束
for k=1:len %挨个title查询
    a0=title(k,1);
    i=0;
    frewind(Origin); %很重要,保证每次循环将指针复位到txt的首行,从头开始查
    while  ~feof(Origin)   %循环体,feof为逐行查询txt
        i=i+1;
        tline = fgetl(Origin);
        if strcmp(tline,a0) %如果当前行是所查询的行
            q(k,1)=i+2;%记录下来title的位置(其下2行开始为真实数据,故+2)
            break  %一旦查到就停止再往下查
        end
    end

    while  ~feof(Origin) %从上次从第i行的break的那里再开始,向后查询
        i=i+1;
        tline = fgetl(Origin);
        if  numel(tline)==0 %一旦出现第一个空行
            q(k,2)=i-1; %记录下来空行的位置(其上一行为真实数据,故-1)
            break  %一旦查到就停止再往下查
        end
    end
end
fclose(Origin); %必须关,不然下次开会有问题
fprintf( 'the line is line number')
disp(q)   %输出查询到的行号

运行结果及报错内容

错误使用 fseek

出错 frewind (第 16 行)
status = fseek(fid, 0, -1);

我想要达到的结果

运行成功,查询到要修改内容的所在行

fseek报错可能是没有能正确运行fopen,也就是说,没有生成正确的文件指示符Origin。

因为使用fopen的函数方式为,
fopen(文件地址,’r')。

所以要确保fopen后面括号里的第一个参数是正确的文件地址。如果文件地址不对,就会报错。
在这个代码中,参数fn就是地址。

建议可以直接把第一行改为
fn=“C:\Users\XXXX\Documents\MATLAB\xxx.txt"这样 (双引号里为所要查找的txt文件的完整真实地址哈)

Input函数本意是一个提示函数,提示输入正确的地址用的,用input函数只是为了方便交互。
其实不使用input,或者改变input括号内的参数,也不会有影响哦。
`