Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何替换命令提示符中已打印的文本?_C_Text_Command Prompt - Fatal编程技术网

C 如何替换命令提示符中已打印的文本?

C 如何替换命令提示符中已打印的文本?,c,text,command-prompt,C,Text,Command Prompt,很多时候,我看到基于文本的程序取代了已经打印的文本。例如,想象一个程序,其中进度打印为 Loading: 5% 然后它说 Loading: 10% 等等,而不打印附加的新文本 这是怎么做到的?我在库中没有看到任何这样的函数(在本例中是C)。不过,我有一个想法:您可以编写一个字符,将提示返回到当前行的开头(\r我相信)。这是否可用于“覆盖”已打印到命令提示符的内容?我看到的一种方法是只打印退格字符多次,然后用新文本替换已擦除的内容 退格字符是一种ASCII控制字符,在大多数控制台中由\b.表示

很多时候,我看到基于文本的程序取代了已经打印的文本。例如,想象一个程序,其中进度打印为

Loading: 5%
然后它说

Loading: 10%
等等,而不打印附加的新文本


这是怎么做到的?我在库中没有看到任何这样的函数(在本例中是C)。不过,我有一个想法:您可以编写一个字符,将提示返回到当前行的开头(
\r
我相信)。这是否可用于“覆盖”已打印到命令提示符的内容?

我看到的一种方法是只打印退格字符多次,然后用新文本替换已擦除的内容


退格字符是一种ASCII控制字符,在大多数控制台中由\b.

表示,在将光标返回到当前行的开头后,写入不带换行符的裸回车
\r
,允许覆盖现有文本。写入退格字符
\b
也会将光标向后移动一个字符

对于简单的行为,例如进度指示器,这就是您所需要的。对于更复杂的行为,您需要通过非标准方式控制终端。在基于Unix的系统上,可以使用该库—它使您能够完全控制光标位置、文本颜色、键盘回音、更细粒度的键盘输入等


在Windows上,有一个操作控制台的方法,它们可以做与Unix控制台基本相同的事情。

使用
printf
\r
是一种方法。更复杂的是诅咒库的使用。@George Kastrinis:不,还没有,但我现在会^