huajun_ming 发表于 2011-8-31 10:45:36

循环读取行号出错

我想通过查找文本文件中已知内容所在的行号,并打印该行出来,但是通过循环读取的时候,第一个行号还正确,到后面就不正确了,不知道为什么,我通过断点调试了一下,发现到读取第二个内容的时候它每次读的内容好像就不是一行行读。
如果我固定读取一行的内容的话,就不会出错。clear
clc
filename_in='F:\20110108-043040.txt';
fidin=fopen(filename_in, 'rt');
NoOfLine=zeros(1, 11);    %因为我要查找11个字符串,从trigger 0到trigger 10
for i=0:10
    nline=1;                        %每次读字符串时,都重新从文本读取,所以设定从第1行开始读
CharOfTrigger=['trigger ' num2str(i)];%用循环每次先读字符串,然后再文本中从头开始找
while ~feof(fidin)
tline=fgetl(fidin);
if strfind(tline, CharOfTrigger)>=1
   fprintf('%s\n', tline);
            NoOfLine(i+1)=nline;
   break;
end
nline=nline+1;
end
end
fclose(fidin);求求大家帮我看看有什么问题。
我用的是MATLAB R2009b的版本。谢谢!

huajun_ming 发表于 2011-8-31 14:26:29

:lol我知道错哪了
这里面犯了一个致命错误就是,每次循环结束之后,我只是把行号改了,改到第1行,但是没有把光标的位置改到文本文件的开始。
在循环的结束位置缺少一个frewind(fidin)。
页: [1]
查看完整版本: 循环读取行号出错