代码之家  ›  专栏  ›  技术社区  ›  maja

octave/cli-将长输出保持在同一控制台行上

  •  1
  • maja  · 技术社区  · 7 年前

    我使用的算法需要一些时间来计算,如果我打印一个输出来确保正确的代码段正在执行,即使是编写一个 . 每一次迭代,我最终都会看到整个屏幕上布满了点,这些点覆盖了我可能感兴趣的所有以前的输出。

    在向控制台行发送输出时,是否有方法“将光标发回”? 或者,是否有办法在控制台输出端输出一个“旋转条”,以便执行从A点到B点的程序所需的时间?

    我要找的是写下以下内容,其中每一行将按顺序出现在同一行上:

    Processing
    Processing .
    Processing ..
    Pricessing ...
    Processing
    Processing .
    Processing ..
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   carandraug    7 年前

    可以打印退格字符( \b )将光标向后移动。似乎它可能覆盖了前面的字符,但在我的上面却没有。所以如下所示:

    printf ("processing ");
    for i = 1:3
      for i = 1:9
        printf (".");
        pause (0.1);
      endfor
      printf (repmat ("\b", 1, 9));
      printf (repmat (" ", 1, 9));
      printf (repmat ("\b", 1, 9));
    endfor
    printf ("\n");
    

    或者,你可以安装八度锻造 miscellaneous package ,这是 text_waitbar 功能:

    pkg load miscellaneous;
    
    text_waitbar (0, 70); # set length of waitbar
    text_waitbar (0.0, "processing ");
    for i = 1:3
      for i = 1:9
        text_waitbar (i/9, "processing");
        pause (0.1);
      endfor
    endfor
    

    会是这样的:

    [############################################              ]   80%
    
    推荐文章