[英]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.