How do I pass a filename to a routine in Matlab's command window?
    4 次查看(过去 30 天)
  
       显示 更早的评论
    
In the Matlab Command window I would like to run a function with an input parameter, like this:
>> xxxreplace oldGEOPLOT
s = 
    "./html/oldGEOPLOT.html"
Error using fread
Invalid file identifier. Use fopen to generate a valid file identifier.
Error in xxxreplace (line 14)
ff=fread(fid,'*char')';
I'm using this code :
function file=xxxreplace(x)
f=string(x);
s=strcat('./html/',f,'.html')
fid=fopen(s,'r');
ff=fread(fid,'*char')';
fclose(fid);
ff =strrep(ff,'.png" alt="">','.png" alt="" width="360">');
fid=fopen('./html/new.html','w');
fprintf(fid,'%s',ff);
fclose(fid);
disp(s)
end
Why do I get this error?
Thanks a lot,
Harry
4 个评论
采纳的回答
  Jan
      
      
 2021-9-19
        
      编辑:Jan
      
      
 2021-9-23
  
      The error message is clear: The file does not exist. Although you assume, that the current folder is the same, this is not true. Check this explicitly:
function file = xxxreplace(x)   % What is "file"?
s = fullfile('./html/', [x, '.html']);
[fid, msg] = fopen(s, 'r');
assert(fid > 0, msg);
ff = fread(fid,'*char')';
fclose(fid);
ff  = strrep(ff,'.png" alt="">','.png" alt="" width="360">');
[fid, msg] = fopen('./html/new.html', 'w');
assert(fid > 0, msg);
fprintf(fid, '%s', ff);
fclose(fid);
end
Trusting on the current folder is a bad programming practice. Any timer or gui callback might change the current folder unexpectedly. Prefer to use absolute file names. 
3 个评论
更多回答(0 个)
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Scope Variables and Generate Names 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




