I have a variable with a string that I would like to use as a filename, how do I input that string into a function rather than the variable name?

1 view (last 30 days)
As below, I have a dialog box asking me for a filename.
It will then add the file extension onto the end.
answer = inputdlg(fileName,dlgtitle,dims,definput);
fileName1 = strcat(answer,'.dxf');
FID = dxf_open(fileName1);
I've tried numerous different ways, and they all end up with errors.
The code works normally if I hardcode the file name into the dxf_open function. e.g. 'Export.dxf'

Accepted Answer

the cyclist
the cyclist on 22 Jun 2020
Edited: the cyclist on 22 Jun 2020
I think I see the problem. Did you notice that the output of the inputdlg command is a cell array? You need the contents of that cell array, which is the character array you want. So you need something like this:
fileName1 = strcat(answer{:},'.dxf');
Note the {:} after answer, to get at the contents of the cell array.
  1 Comment
AThomas
AThomas on 22 Jun 2020
Thank you very much for your help.
The code works with the {:} in the dxf_open portion
fileName1 = strcat(answer,'.dxf');
FID = dxf_open(fileName1{:});

Sign in to comment.

More Answers (1)

the cyclist
the cyclist on 21 Jun 2020
I don't have dxf_open, but the following -- which is effectively the same as what you posted -- works for me:
answer = 'test';
fileName1 = strcat(answer,'.dxf');
fid = fopen(fileName1,'w');
fprintf(fid,'test_write')
fclose(fid)

Categories

Find more on Characters and Strings in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!