Error using fprintf Invalid file identifier. Use fopen to generate a valid file identifier.

389 views (last 30 days)
Hello, I have a problem, every program I try to run gives me this error. Even with the matlab examples.
This is the code from the mathworks page:
A = magic(4);
fileID = fopen('myfile.txt','w');
nbytes = fprintf(fileID,'%5d %5d %5d %5d\n',A);
fclose(fileID);
type('myfile.txt')
  1 Comment
Benjamin Kraus
Benjamin Kraus on 24 Jan 2018
Can you clarify your question?
  • When you say "every program", do you mean every command you try to run in MATLAB?
  • If you run those commands one at a time, do you get any other error messages?
  • Are you running those commands in a directory in which you have write access?
  • What is the value of fileID after calling fopen?

Sign in to comment.

Accepted Answer

Benjamin Kraus
Benjamin Kraus on 24 Jan 2018
When fopen fails, it does not generate an error message. Instead, it sets the fileID to -1.
Check the value of fileID after calling fopen.
If it is -1, check whether you have write permissions in the directory you are trying to write to. Most likely you are trying to write a file to a directory that is read-only, and you either need to change directories or specify an absolute path instead of a relative path.
  3 Comments

Sign in to comment.

More Answers (2)

Walter Roberson
Walter Roberson on 24 Jan 2018
You do not have write access to the directory you are in. Your current directory is probably a directory that MATLAB is installed in.
Change
fileID = fopen('myfile.txt','w');
to
[fileID, message] = fopen('myfile.txt','w');
if fileID < 0
error('Failed to open myfile because: %s', message);
end

Akash kumar
Akash kumar on 4 Jun 2021
if you open the fopen file in his format and you run the again matlab file then it gives the error.
First:- You close the fopen file in your system . In your case it is 'myfile.txt'
second:- Now you run your code.
Note:- YOUR code will be definately run.
Thanks!
  3 Comments
Walter Roberson
Walter Roberson on 5 Jun 2021
But it will not be a "permission denied" situation. The message will be different. See https://www.mathworks.com/matlabcentral/answers/378848-error-using-fprintf-invalid-file-identifier-use-fopen-to-generate-a-valid-file-identifier#answer_301617 for how to get the message.
And when you cannot open a file because it is open for writing in Excel, then fclose() of the file in your MATLAB session does not help: you would need to convince Excel to close the file.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!