更新终端上显示的文本

问题描述 投票:2回答:2

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

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

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

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

c arrays linux printf output
2个回答
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)写下一个数组


0
投票

你可以尝试这样的事情:

#include<stdio.h>

int main(void)
{

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

}

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

© www.soinside.com 2019 - 2024. All rights reserved.