为什么`fprintf / sprintf`在`keypressfcn`上不起作用?

问题描述 投票:1回答:1

我在打开图形时试图在文本文件中键入键盘字符,所以我在下面的代码中写下了代码。我想念什么吗? (也尝试过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
octave keypress
1个回答
0
投票

您需要写入文件。

fprintf( fid, "%s", mystr );

大概您使用fprintf作为fprintf( "%s", mystr ),它只是写入默认输出,即您的终端。

顺便说一句,由于您要打印的只是一个字符串,所以根本不需要指定"%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 );
© www.soinside.com 2019 - 2024. All rights reserved.