Reputation: 141
I'm attempting to create a game of life program in C, but i'm not very familiar with a process to update the output displayed on the terminal.
So, for example, I will have a 2d char array, where each element will contain either a '#' or a '-'. I will print this array onto the screen, but rather than printing a new 2d array every time there is a state change, I want to overwrite the old array in the terminal with the new state.
I have looked for ways to do this, but haven't had much luck. The closest I have found is a carriage return in the printf function (\r), but hopefully someone can tell me the best way to do this.
Specifically, how could I print out a 2d array on the screen, change the elements of the array, and print out the new array ON TOP of the old one, ie, overwrite it.
Upvotes: 4
Views: 2963
Reputation: 23228
(some of these links, code snippets are Linux, and others are Windows)
Given your specific questions, (and assuming you do know how to write an array to the console) :
1) write the first array.
2) Then Clear The Console (or over write the console)
Something like this:
#include <stdlib.h>
void main()
{
system("cls");
}
Or write the following to stdout: (Linux)
write(1,"\E[H\E[2J",7);
which is what /usr/bin/clear does except it does not create another process.
Or both:
void clear_screen()
{
#ifdef WINDOWS
system ( "CLS" );
#else
// Assume POSIX
system ( "clear" );
#endif
}
3) write the next array
Upvotes: 2