为什么 `fprintf/sprintf` 在 `keypressfcn` 上不起作用?
Why is `fprintf/sprintf` not working on `keypressfcn`?
我试图在我的图形打开时将键盘字符键入文本文件,所以我写下了下面的代码。我错过了什么吗? (也试过fprintf
)非常感谢
function myGUI()
h.Mainfrm = figure("position", [200 200 200 200]);
set(h.Mainfrm, "keypressfcn", @keypressCallback);
endfunction
function keypressCallback(hObject, eventdata)
data = eventdata;
mystr = data.Character;
fid = fopen("mytext.txt");
sprintf("%s" ,mystr)
fclose(fid);
endfunction
您需要写入文件。
fprintf( fid, '%s', mystr );
大概您使用的是 fprintf 作为 fprintf( '%s', mystr )
,它只是写入默认输出,即您的终端。
此外,您正在写入的文件需要以'writable'打开!或者,在您的情况下,由于您似乎想逐个字符地写入并将每个字符附加到文件中,因此您需要使用 'append' 标志打开它:
fid = fopen( 'mytext.txt', 'a');
顺便说一句,因为你打印的只是一个字符串,你根本不需要指定 '%s'
,直接打印你的字符串:
fprintf( fid, mystr );
如果您还想做一些健全性检查,捕获 fprintf 的输出,它会告诉您有多少字符已保存到文件中。
Output = fprintf( fid, mystr );
if Output == 0; fprintf( 'Nothing written to file\n' ); endif
另外,请注意 fprintf 不会以换行符终止您的字符串。如果你想要一个换行符而你的 mystr
末尾没有,那么你需要明确指定一个,即:
fprintf( fid, '%s\n', mystr );
我试图在我的图形打开时将键盘字符键入文本文件,所以我写下了下面的代码。我错过了什么吗? (也试过fprintf
)非常感谢
function myGUI()
h.Mainfrm = figure("position", [200 200 200 200]);
set(h.Mainfrm, "keypressfcn", @keypressCallback);
endfunction
function keypressCallback(hObject, eventdata)
data = eventdata;
mystr = data.Character;
fid = fopen("mytext.txt");
sprintf("%s" ,mystr)
fclose(fid);
endfunction
您需要写入文件。
fprintf( fid, '%s', mystr );
大概您使用的是 fprintf 作为 fprintf( '%s', mystr )
,它只是写入默认输出,即您的终端。
此外,您正在写入的文件需要以'writable'打开!或者,在您的情况下,由于您似乎想逐个字符地写入并将每个字符附加到文件中,因此您需要使用 'append' 标志打开它:
fid = fopen( 'mytext.txt', 'a');
顺便说一句,因为你打印的只是一个字符串,你根本不需要指定
'%s'
,直接打印你的字符串:
fprintf( fid, mystr );
如果您还想做一些健全性检查,捕获 fprintf 的输出,它会告诉您有多少字符已保存到文件中。
Output = fprintf( fid, mystr );
if Output == 0; fprintf( 'Nothing written to file\n' ); endif
另外,请注意 fprintf 不会以换行符终止您的字符串。如果你想要一个换行符而你的 mystr
末尾没有,那么你需要明确指定一个,即:
fprintf( fid, '%s\n', mystr );