如何清除命令窗口中的最后一行?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (22)

我对运行程序的进度很好奇,我打印了一些有关当前迭代的信息,如:

for i = 1:N
    ...
    ...
    msg = sprintf('Processed %d/%d', i, N);
    display(msg)
end

我不想在单独的行上打印进度,相反,我希望最后一行代替前一行。我不想用clc清除了所有的内容。

我知道'\b'可以清除最后一个字符(如Backspace),我可以使用for循环创建一个函数,该函数清除项目,直到最后一行之前的新行。但有什么更好的方法吗?如果不是,如何检查命令行上的最后一个字符是否为新行?

提问于
用户回答回答于

不久前我已经研究过这个问题了。我注意到这个角色\r(用于擦除最后一行)在命令行(-no桌面)中使用matlab,但不适用于图形模式...

我找到的最好的解决办法是这样做:

n=0;
for ...
  ...
  fprintf(repmat('\b',1,n));
  fprintf(msg);
  n=numel(msg);
end
用户回答回答于

如何使用Backspace控件-字符(\b)做你想做的事,但方法比你想的要简单。修改代码以类似于他的示例,可以这样做:

reverseStr = '';
for i = 1:N
    ...
    ...
    msg = sprintf('Processed %d/%d', i, N);
    fprintf([reverseStr, msg]);
    reverseStr = repmat(sprintf('\b'), 1, length(msg));
end

所属标签

可能回答问题的人

  • 人生的旅途

    10 粉丝484 提问5 回答
  • 天使的炫翼

    17 粉丝531 提问5 回答
  • 不吃貓的鱼oo

    4 粉丝466 提问4 回答
  • 找虫虫

    0 粉丝0 提问4 回答

扫码关注云+社区

领取腾讯云代金券