我正在尝试用C创建一个生命游戏程序,但我不太熟悉更新终端上显示的输出的过程。
因此,例如,我将有一个2d char数组,其中每个元素将包含'#'或' - '。我将这个数组打印到屏幕上,但不是每次状态改变时都打印一个新的2d数组,我想用新状态覆盖终端中的旧数组。
我已经想办法做到这一点,但没有太多运气。我找到的最接近的是printf函数(\ r)中的回车符,但希望有人能告诉我最好的方法。
具体来说,我怎样才能在屏幕上打印出2d数组,更改数组的元素,并打印旧数组的新数组,即覆盖它。
(其中一些链接,代码片段是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
}
3)写下一个数组
你可以尝试这样的事情:
#include<stdio.h>
int main(void)
{
printf ("#####-----\r");
printf ("-#####----\r");
}
不确定我是否真的回答了你的问题。如果这不是你的答案那么你肯定在寻找像ncurses这样的东西。