更新/刷新terminal上显示的文本

我试图用C语言来创build一个人生游戏程序,但是我不是很熟悉更新terminal上显示的输出的过程。

所以,例如,我将有一个2d的char数组,其中每个元素将包含一个'#'或' – '。 我将这个数组打印到屏幕上,而不是每次出现状态变化时打印一个新的二维数组,我想用新的状态覆盖terminal中的旧数组。

我已经find了这样做的方法,但没有太多的运气。 我发现最接近printf函数(\ r)回车,但希望有人可以告诉我这样做的最好方法。

具体来说,我怎样才能在屏幕上打印一个二维数组,更改数组中的元素,并打印出旧的新数组,即覆盖它。

(其中一些链接,代码片段是Linux,而其他的是Windows)
考虑到你的具体问题 ,(假设你知道如何写一个数组到控制台):

1)写入第一个数组。
2)然后清除控制台(或在写控制台)
像这样的东西:

#include <stdlib.h> void main() { system("cls"); } 

或者写下下面的标准输出:(Linux)

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

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

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

更多选项在这里

3)写下一个数组

你可以尝试这样的事情:

 #include<stdio.h> int main(void) { printf ("#####-----\r"); printf ("-#####----\r"); } 

不知道我是否真的回答了你的问题。 如果这不是你的答案,那么你一定在寻找像ncurses这样的东西。