当前位置: 首页 > 面试题库 >

如何在控制台应用程序(Linux)中擦除打印的字符?

麹学文
2023-03-14
问题内容

我正在创建一个需要进度条的小型控制台应用程序。就像是…

Conversion: 175/348 Seconds   |==========          |  50%

我的问题是,如何删除已经打印到控制台的字符?当我达到第51个百分比时,我必须从控制台中删除此行并插入新行。在我当前的解决方案中,这就是发生的事情…

Conversion: 175/348 Seconds   |==========          |  50%
Conversion: 179/348 Seconds   |==========          |  52%
Conversion: 183/348 Seconds   |==========          |  54%
Conversion: 187/348 Seconds   |===========         |  56%

我使用的代码是…

print "Conversion: $converted_seconds/$total_time Seconds   $progress_bar  $converted_percentage%\n";

我正在使用PHP在Linux中进行此操作(只有我会使用该应用-请原谅语言选择)。因此,该解决方案应在Linux平台上运行-
但是,如果您有跨平台的解决方案,那将是更好的选择。


问题答案:

我认为您无需为语言选择道歉。PHP是控制台应用程序的绝佳语言。

试试看:

<?php
for( $i=0;$i<10;$i++){
  print "$i \r";
  sleep(1);
}
?>

“ \ r”将用新文本覆盖该行。要换行,您可以只使用“ \ n”,但是我想您已经知道了。

希望这可以帮助!我知道这可以在Linux中使用,但是我不知道它是否可以在Windows或其他操作系统上使用。



 类似资料:
  • 问题内容: 我一直在寻找其他语言的用法,但发现必须使用特殊字符\b删除最后一个字符。 对于多次调用console.log()的node.js,这不起作用。 如果我写一个日志: 我得到结果:abd 但是如果我写: 我得到结果: abc d 我的目标是打印一条等待消息,例如: 等待 等待。 等待中.. 等待中… 然后再次: 等待 等待。 等等 都在同一行。 问题答案: 有以下功能可用: 可以提供参数

  • 我试图使用TDD(测试驱动开发)与。当我使用时,不会到控制台。 我正在使用来运行它。 似乎说默认情况下它应该工作:http://pytest.org/latest/capture.html 但是: 没有任何东西被打印到我的标准输出控制台(只是正常的进度和多少测试通过/失败)。 我正在测试的脚本包含打印: 在模块中,默认情况下打印所有内容,这正是我所需要的。但是,出于其他原因,我希望使用。 有人知道

  • 问题内容: 我的C程序粘贴在下面。在bash中,程序打印“ char is”,不打印Ω。我的语言环境均为en_US.utf8。 问题答案: 这很有趣。显然,编译器将omega从UTF-8转换为UNICODE,但libc某种程度上将其弄乱了。 首先:-format说明符期望一个(即使在wprintf -version 中也是如此),因此您必须指定(并因此指定字符串)。 其次,如果您像这样将语言环境设

  • 问题内容: 如何打印(在控制台),,等这个结构中Golang的? 问题答案: 要在结构中打印字段名称: 从包装中: 打印结构时,加号()添加字段名称 假设您有一个Project的实例(在’ ‘中) 文章JSON和Go将提供有关如何从JSON结构中检索值的更多详细信息。 此“按示例进行搜索”页面提供了另一种技术: 那会打印: 如果没有任何实例,则需要 使用反射 来显示给定结构的字段名称,如本例所示。

  • 如何在Golang中打印(在控制台中)该结构的、、等?

  • 问题内容: 如何在C中擦除当前打印的控制台行?我正在Linux系统上工作。例如 - 我想在同一行上打印再见,代替您好。 问题答案: 您可以使用VT100转义码。包括xterm在内的大多数终端都支持VT100。要擦除线,此为。在C中,它给出: