簡體   English   中英

是否可以使用回車 \\r 而不覆蓋已經寫入的文本?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM