fopen syntax, a new usage???

i found a usage of fopen which is not found in MATLAB documentations
here is my code
s = 'name';
fileID = fopen([s,'.txt'],'w');
this syntax really works. but i could not found the source.
the ordinary usage of fopen could be
fileID = fopen('name.txt','w')
why?
is MATLAB documentation uncomplete?
thank you!

1 Comment

Stephen23
Stephen23 on 13 Jul 2020
Edited: Stephen23 on 13 Jul 2020
"but i could not found the source."
Did you try reading the source that I gave in your earlier question?
"is MATLAB documentation uncomplete?"
No. Just because you combined several commands and could not find that specific combination of commands in the documentation does not mean that the documentation is "uncomplete". Lets try another example: here are some commands that I combined just now:
pow2(sqrt(mode([9,9,4,1])))
Will we find that combination in the MATLAB documentation? I very much doubt it. Does this mean that the MATLAB documentation is "uncomplete" ? No, it does not. It means the user needs to look up each of those commands separately, understand how they work, and undertand how the combination works. This is exactly the same for all programming languages.

Sign in to comment.

 Accepted Answer

It’s not so complicated [] is used for concatenation
['name', '.txt'] % try it in command window and see what happens

6 Comments

The syntax for fopen() is that the first parameter must be an expression that evaluates to a character vector or a scalar string object. 'name.txt' is an expression that evaluates to a character vector -- namely the one given right there in quotes. But [s, '.txt'] is also (potentially) an expression that evaluates to a character vector, but concatenating on '.txt' at the end of whatever s contains.
The syntax for fopen() does not require a literal quoted character vector giving an unchangable file name: you can use an expression of any sort, including a variable that holds the file name.
Thank you sir Walter , it’s profound explanation.
Stephen23
Stephen23 on 13 Jul 2020
Edited: Stephen23 on 13 Jul 2020
"The syntax for fopen() does not require a literal quoted character vector..."
Are there any functions where a literal character vector is required? I cant imagine how this restriction would be useful, nor how the compiler would realistically enforce this.
Only for obtuse meanings of "required"
In the case of using command syntax instead of function syntax, then if an argument has whitespace or semi-colon or comma in it, then you need to use apostrophes (I seem to remember some cases where double-quotes did not do the trick, but I have not re-tested that in a couple of releases.)
yes, thank you all.
as Walter Roberson says '...including a variable that holds the file name.'
that's everything that i need.

Sign in to comment.

More Answers (0)

Products

Release

R2019b

Asked:

on 13 Jul 2020

Commented:

on 13 Jul 2020

Community Treasure Hunt

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

Start Hunting!