[英]Is it possible to use carriage return \r without overwriting already written text?
假设我在控制台中打印了Welcome
。 如果我使用
printf(" Welcome");
printf("\rHello world.");
我只得到Hello world.
有没有什么特殊的命令可以获取Hello world. Welcome
Hello world. Welcome
而不打印 Hello world 和 Welcome。 基本上,我想要回车而不覆盖文本。 这在C中可能吗?
不,这在 ANSI C 中是不可能的。假设您希望这是 ANSI C,您将不得不打印"Hello, World."
首先,然后打印" Welcome"
。
否则,有各种解决方案,包括诅咒。 有关诅咒解决方案,请参阅 mevets 的答案。
首先尝试man curses ,然后尝试man ncurses如果失败。 一旦你找到了 curses 文档,你想要的函数是insstr ,或者可能是inch :
这些例程在光标下的字符之前插入一个字符串(尽可能多的字符)。 光标右侧的所有字符都向右移动,但该行最右边的字符可能会丢失
#include <ncurses.h>
#include <unistd.h>
int main() {
initscr();
printw("Welcome");
refresh();
sleep(2);
insstr("\rHello, world. ");
refresh();
sleep(10);
endwin();
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.