更新终端上显示的文本

时间:2014-04-21 20:19:42

标签: c arrays linux printf output

我正在尝试用C创建一个生命游戏程序,但我不太熟悉更新终端上显示的输出的过程。

因此,例如,我将有一个2d char数组,其中每个元素将包含'#'或' - '。我将这个数组打印到屏幕上,但是每次状态改变时都不打印新的2d数组,我想用新状态覆盖终端中的旧数组。

我已经想办法做到这一点,但运气不好。我找到的最接近的是printf函数(\ r)中的回车符,但希望有人可以告诉我最好的方法。

具体来说,我如何在屏幕上打印出2d数组,更改数组的元素,并打印旧数组的新数组,即覆盖它。

2 个答案:

答案 0 :(得分:1)

(其中一些链接,代码片段是Linux,其他是Windows) 鉴于您的具体问题 ,(并假设您确实知道如何将数组写入控制台):

1) 编写第一个数组 2) 然后清除控制台(或覆盖控制台)
像这样:

#include <stdlib.h>

void main()
{
   system("cls");
}     

或者将以下内容写入stdout :( Linux)

write(1,"\E[H\E[2J",7);

这是/ usr / bin / clear所做的,除了它不会创建另一个进程 或两者:

 void clear_screen()
 {
  #ifdef WINDOWS
     system ( "CLS" );
  #else
     // Assume POSIX
     system ( "clear" );
  #endif
 }  

More Options Here

3) 编写下一个数组

答案 1 :(得分:0)

您可以尝试这样的事情:

#include<stdio.h>

int main(void)
{

printf ("#####-----\r");
printf ("-#####----\r");

}

不确定我是否真的回答了你的问题。如果这不是你的答案那么你肯定在寻找类似ncurses的东西。