我正在编写一个MATLAB GUI程序,其中放在文本框中的数据存储在.dat文件中。当重新加载程序时,文本框从文件中获取数据(这样用户不必每次都重新输入他的信息)。这部分代码将数据保存到.dat文件中:
fid = fopen('textboxdata.dat', 'wt');
fprintf(fid, '%s\n', host);
fprintf(fid, '%s\n', username);
fprintf(fid, '%s\n', password);
fclose(fid);
[主机,用户名和密码是字符串]
这部分代码获取数据并放入文本框中:
s = dir('textboxdata.dat');
if s.bytes ~= 0
fid = fopen('textboxdata.dat', 'rt');
A = textscan(fid, '%s', 3);
A = A{1};
set(handles.hostbox, 'String', A(1))
set(handles.usernamebox, 'String', A(2))
set(handles.passwordbox, 'String', A(3))
fclose(fid);
end
现在这可以正常工作,但是当用户尝试使用此数据登录到FTP服务器时,我收到此错误:
???使用==>时出错fprintf中 没有为“单元格”输入定义函数。
==>中的错误realgui> logonbutton_Callback at 198 fprintf(fid,'%s \ n',主持人);
==>中的错误gui_mainfcn at 96 feval(varargin {:});
==>中的错误42岁的realgui gui_mainfcn(gui_State,varargin {:});
==>中的错误@(hObject,EVENTDATA)realgui( 'logonbutton_Callback',hObject,EVENTDATA,guidata(hObject))
但奇怪的是,如果你重新输入所有数据,你可以很好地登录到FTP服务器!我在这里彻底迷失了。有没有人知道发生了什么?
答案 0 :(得分:0)
A = A{1}
生成一个包含字符串的单元格单元格。
因此,当您调用set(handles.hostbox, 'String', A(1))
时,A(1)的值实际上是一个单元格,而不是您希望的字符串。
由于A(1)
是包含字符串的单元格,因此您希望使用A{1}
引用单元格中包含的字符串。
单元格内容的大括号,单元格及其内容的括号。