필터 지우기
필터 지우기

Invalid file identifier. Use fopen to generate a valid file identifier.

조회 수: 244 (최근 30일)
Hello,
I am trying to open a file, skip the first 6 lines (headers) and extract data from the rest of the lines in the file. Here is the code:
%%Declarations
targetinfo(1000)=struct('distance', 0, 'speed', 0, 'angle', 0, 'rcs', 0);
i=1; %index
count=0; %file size counter
[fid, message]=fopen('log.asc','r'); %open log file
%%Read file and extract relevant data
if fid==-1
disp('Error')
else
for k=1:6
header=fgetl(fid); %skip headers
end
while ~feof(fid)
line=fgetl(fid);
if line(16)=='S' || line(13)=='C' || line(1)=='T' %remove control and status signals
continue;
end
id=str2num(line(16:18));
line=line(41:63);
line=line(~isspace(line));
if id==100
canstatus=hex2dec(line(1:2));
targetcount=hex2dec(line(3:4));
canchannel=hex2dec(line(9:10));
else
targetinfo(i).distance=hex2dec(line(1:4));
targetinfo(i).speed=hex2dec(line(5:8));
targetinfo(i).angle=hex2dec(line(9:12));
targetinfo(i).rcs=hex2dec(line(13:16));
end
count=count+1; %increase file size counter
i=i+1; %increase index
fclose(fid); %close file
end
end
I am getting the error I have specified in the title. The value of fid returned is not -1 (it is 4 at the moment) and I do have access to the file, since I can open it in Notepad to view its contents.
I am not opening and closing the file multiple times, just once. Is there any reason I'm missing out?
Thank you for your help.

채택된 답변

Preethi
Preethi 2016년 11월 21일
hi,
you are closing the file in while loop and trying to access it again. use fclose() after you encountered feof

추가 답변 (1개)

daniel cheng yi lu
daniel cheng yi lu 2018년 11월 28일
For my situation, I have checked everything but missed an easy step.
Please select "Browse for folder" and browse for the folder which the current script is saved, before you run your 'fopen' code.
2018-11-28 (3)_LI.jpg
  댓글 수: 5
Justin Bryant
Justin Bryant 2023년 2월 23일
편집: Justin Bryant 2023년 2월 23일
Thanks helped me too!

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Low-Level File I/O에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by