system() is portable -- the commands it execute are not. There are no portable ways to clear the screen. You might have to do something like this, where each compiler for the target os defines one of the symbols listed in the code below.
#ifdef _UNIX_
system("clear");
#elif def _WINDOWS_
system("cls");
#elsif def _OTHER_OPERATING_SYSTEM
systgem(<put here whatever works>);
#endif
Ancient Dragon
Retired & Loving It
30,049 posts since Aug 2005
Reputation Points: 5,662
Solved Threads: 2,343
jbennet
Moderator
18,523 posts since Apr 2005
Reputation Points: 1,826
Solved Threads: 601
Why do you want to do that?
(In other words, unless you are writing a full-screen text application like an editor or video game, don't do that.)
Otherwise, on Windows, see Example Two
On Unix/Linux/POSIX:
#include <unistd.h>
#include <term.h>
void clearscreen()
{
if (!cur_term)
{
int success;
setupterm( NULL, STDOUT_FILENO, &success );
if (success <= 0) return;
}
putp( tigetstr( "clear" ) );
}
You'll need to link with one of the following (depending on your system):
-lcurses
-lncurses
-lterminfo
If you are writing a CUI application, though, you should just use Curses directly:PDCurses
Windows, DOS, OS/2, Plan 9, etc
http://pdcurses.sourceforge.net/
NCurses
POSIX systems, Mac OS X, etc
http://www.gnu.org/software/ncurses/
Getting started
http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/
http://web.cs.mun.ca/~rod/ncurses/ncurses.html
Hope this helps.
Duoas
Postaholic
2,043 posts since Oct 2007
Reputation Points: 1,140
Solved Threads: 229
You could, but that isn't portable either. And how many newlines would you print? How would you move the cursor?
Ancient Dragon
Retired & Loving It
30,049 posts since Aug 2005
Reputation Points: 5,662
Solved Threads: 2,343