Error: Undefined function or variable 'fgetl' when fgetl() is placed inside an else statement

6 views (last 30 days)
Hi, I'm writing a simple script to read a .csv file. I get the error:
Undefined function or variable 'fgetl'.
Error in (filename) (line 36)
line = fgetl(fid);"
It's strange because the call to fgetl() outside the if statement works fine!
if(~exist(file_in))
FInputErrMsg = 'not located in working directory.';
Suggestion = ['Change script parameter or move the file into script'...
' working directory.'];
error('Expected input file: "%s" %s\n%s',file_in,FInputErrMsg,Suggestion);
elseif(exist(file_out))
% TODO#1
end
% Open file_in1 to count the number of sites N
fid = fopen(file_in,'r');
line = fgetl(fid);
if(fid == -1)
error('Error opening %s. Exiting.', file_in);
else
line = fget1(fid); %<---------------------- Offending Line
end
fclose(fid);

Accepted Answer

Steven Lord
Steven Lord on 16 Jul 2017
Check in your original code whether you're calling fgetl with a lower-case L or calling fget1 with the number one. The code segment you posted implies the latter, the error message you posted implies the former.
  2 Comments
Minh Tran
Minh Tran on 16 Jul 2017
Edited: Minh Tran on 16 Jul 2017
*Tear out hair* I apologize. In my haste, I must have tried both lowercase L and the number one but copied the version with the number one onto my clipboard.
Looking at the editor, the lowercase L and the number 1 looks AWFULLY similar.

Sign in to comment.

More Answers (1)

dpb
dpb on 16 Jul 2017
fid = fopen(file_in,'r');
line = fgetl(fid);
if(fid == -1)
error('Error opening %s. Exiting.', file_in);
...
You've got the test for successful fopen out of order; that should be before you try to use it; then the fgetl call doesn't need to be inside the if construct at all. Then, it appears your fopen did fail so you called fgetl(-1) which then looks like an array reference instead of a function call since -1 isn't a valid file handle.
fid = fopen(file_in,'r');
if(fid<0), error('Error opening %s. Exiting.', file_in); end
line = fget1(fid);
fclose(fid);
...

Tags

Products

Community Treasure Hunt

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

Start Hunting!