例如有一个很大的分数
持续2个小时
还有需要看看还有多少
在外循环的屏幕上做输出
但是数值又很多,比如70000
问题 - 如何在打印到屏幕时删除换行符
不接收 70 000 行
并且只在一行中查看当前显示?
例如有一个很大的分数
持续2个小时
还有需要看看还有多少
在外循环的屏幕上做输出
但是数值又很多,比如70000
问题 - 如何在打印到屏幕时删除换行符
不接收 70 000 行
并且只在一行中查看当前显示?
而不是使用disp
在屏幕上显示文本,使用fprintf
,这需要您手动输入换行符。
比较
>> disp('Hello, '), disp('World')
Hello,
World
和
>> fprintf('Hello, '), fprintf('World\n')
Hello, World
\n
末尾的表示'World\n'
换行符(或通常称为换行符)。
试试这个函数,你可以用它来代替disp
字符串参数。它显示到命令窗口,并记住它显示的消息。下次调用它时,它首先从命令窗口中删除先前的输出(使用 ASCII 退格字符),然后打印新消息。
通过这种方式,您只能看到最后一条消息,并且命令窗口不会填满旧消息。
function teleprompt(s)
%TELEPROMPT prints to the command window, over-writing the last message
%
% TELEPROMPT(S)
% TELEPROMPT() % Terminate
%
% Input S is a string.
persistent lastMsg
if isempty(lastMsg)
lastMsg = '';
end
if nargin == 0
lastMsg = [];
fprintf('\n');
return
end
fprintf(repmat('\b', 1, numel(sprintf(lastMsg))));
fprintf(s);
lastMsg = s;